java 使用 javamail 读取电子邮件的 html 正文

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7212534/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 19:05:41  来源:igfitidea点击:

read html body of an email using javamail

javajavamail

提问by Mah

I am trying to get the contents of an html email including the tags etc. right now my code only returns the texts.this is my code:

我正在尝试获取 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();
                    }

                }

            }
        }

any help would be appreciated.

任何帮助,将不胜感激。

回答by dertkw

You can find a mail with Content-Type: TEXT/HTMLlike this:

你可以找到这样的邮件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...
        }
    }
}

Output:

输出:

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