【问题标题】:read html body of an email using javamail使用 javamail 读取电子邮件的 html 正文
【发布时间】:2011-09-16 18:16:59
【问题描述】:

我正在尝试获取 html 电子邮件的内容,包括标签等。现在我的代码只返回文本。这是我的代码:

    Store store = session.getStore("pop3");
    store.connect(host, username, passwoed);

    Folder folder = store.getFolder("Inbox");

    if (!folder.exists()) {
        System.out.println("No INBOX...");
        System.exit(0);
    }

    folder.open(Folder.READ_WRITE);
    Message[] msg = folder.getMessages();

    for (int i = msg.length - 1; i > 0; i--) {
        String sent1 = df.format(sent);
        sent1 = sent1.trim();
        int index11 = sent1.indexOf(DateTime);
        if (index11 != -1) {
            String to = InternetAddress.toString(msg[i].getRecipients(Message.RecipientType.TO));
            String s1 = "";

            try {

                Multipart multipart = (Multipart) msg[i].getContent();

                for (int x = 0; x < multipart.getCount(); x++) {
                    BodyPart bodyPart = multipart.getBodyPart(x);

                    String disposition = bodyPart.getDisposition();

                    if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) {


                        DataHandler handler = bodyPart.getDataHandler();

                        s1 = (String) bodyPart.getContent();
                    } else {

                        s1 = (String) bodyPart.getContent();
                    }

                }

            }
        }

任何帮助将不胜感激。

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

    您可以像这样找到带有Content-Type: TEXT/HTML 的邮件:

    Object content = message.getContent();
    if (content instanceof Multipart) {
        Multipart mp = (Multipart) content;
        for (int i = 0; i < mp.getCount(); i++) {
            BodyPart bp = mp.getBodyPart(i);
            if (Pattern
                    .compile(Pattern.quote("text/html"),
                            Pattern.CASE_INSENSITIVE)
                    .matcher(bp.getContentType()).find()) {
                // found html part
                System.out.println((String) bp.getContent());
            } else {
                // some other bodypart...
            }
        }
    }
    

    输出:

    <H1>Hi there</H1><p>Bye.</p>
    

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 2015-07-30
      • 1970-01-01
      • 2011-10-01
      • 2016-02-01
      • 2012-10-29
      • 2012-12-28
      • 2017-06-04
      • 2013-04-05
      相关资源
      最近更新 更多