java - 使用 JavaMail 解析 MIME 消息

标签 java parsing email scala jakarta-mail

我正在尝试使用 JavaMail API 解析 MIME 消息,我做了一些研究,但我发现的步骤对我不起作用,其中之一是此处的回答: Java Email message Parser?

我这样做是为了传递一个 InputStream,因为 ByteArrayInputStream 来 self 试图解析的内容。 当我这样做时,我的 message.getContent 会导致一个空字符串。

顺便说一句,我正在使用 Scala。

最佳答案

我最近遇到了这个问题,所以你的研究不可能那么好。当我说最近时,我指的是最近几天! :P

但这就是我阅读电子邮件所做的(或者至少在某种程度上阅读了电子邮件。它返回一大块 HTML 文本,这在 JEditorPane 中并不总是很漂亮

private void tableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tableMouseReleased
    final java.awt.event.MouseEvent e = evt;
    Thread t = new Thread(new Runnable() {
        @Override
       public void run() {
           if(table.getRowCount() == 0 || message == null || message.length == 0) {
        // Do nothing
    } else {
        try {
            int row = table.rowAtPoint(e.getPoint());                
            String subject = message[row].getSubject();
            String from = InternetAddress.toString(message[row].getFrom());
            StringBuilder body = new StringBuilder();
            Multipart mp = (Multipart) message[row].getContent();
            for(int i = 0; i < mp.getCount(); i++) {
                BodyPart bp = mp.getBodyPart(i);
                String disp = bp.getDisposition();
                if(disp != null && (disp.equals(BodyPart.ATTACHMENT))) {
                    // Do something
                } else {
                    body.append(bp.getContent());
                }
            }
            EmailContent ec = new EmailContent(new JFrame(),true,from,subject,"<html>" + body.toString());
        } catch (IOException ex) {
            Logger.getLogger(MailPanel.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MessagingException ex) {
            Logger.getLogger(MailPanel.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
       } 
    });
    t.start();
 }

我必须用消息填充一个表格,然后当您单击表格中的一条消息时,它会显示一个包含该消息的新窗口。消息数组只是一个填充了消息对象的数组。所以你显然需要一条消息来做到这一点。但是你所追求的部分是这样的:

 StringBuilder body = new StringBuilder();
 Multipart mp = (Multipart) message[row].getContent();
    for(int i = 0; i < mp.getCount(); i++) {
        BodyPart bp = mp.getBodyPart(i);
        String disp = bp.getDisposition();
        if(disp != null && (disp.equals(BodyPart.ATTACHMENT))) {
            // Do something
        } else {
            body.append(bp.getContent());
        }
    }

关于java - 使用 JavaMail 解析 MIME 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074839/

相关文章:

java - Jsoup——同时迭代多个元素?

Java - 从字符串中提取XML文档

email - 从 Freshdesk 创建 GitHub 问题

html - 自定义 Outlook 桌面警报向我的电子邮件收件人的显示方式

java - Java代码转换为C -> 通过JNI调用 -> 程序停止运行

java - 将泛型 T 转换为 Object[]

python - 在 Python 2.5 中用微秒解析日期时间字符串

html - 电子邮件中的表格单元格高度问题

java - 将 UML 图实现为 java 代码(同时使用聚合和多态性)

java - 我可以在没有root的情况下将txt文件写入data\data\com.example.app(other app)\files吗?