JavaMail - 解析电子邮件内容,似乎无法让它工作!(Message.getContent())

Rhy*_*111 8 java android jakarta-mail

几个星期以来,我一直在为android开发一个电子邮件客户端,我一直忽略解析电子邮件内容一段时间,因为我从来没有能够让它工作.因此,现在是时候寻求帮助了!

我一直在环顾四周,我遇到过一些我尝试过的方法,但从来没有取得多大成功!目前我最接近的尝试必须是:

private String parseContent(Message m) throws Exception
{       
    //Multipart mp = (Multipart)c;
    //int j = mp.getCount();

    /*for (int i = 0; i < mp.getCount(); i++)
    {
        Part part = mp.getBodyPart(i);
        System.out.println(((MimeMessage)m).getContent());
        content = content + part.toString();
        //System.out.println((String)part.getContent());
    }*/

    Object content = m.getContent();
    String contentReturn = null;

    if (content instanceof String) 
    {
        contentReturn = (String) content;
    } 
    else if (content instanceof Multipart) 
    {
        Multipart multipart = (Multipart) content;
        BodyPart part = multipart.getBodyPart(0);
        part.toString();
        contentReturn = part.getContent().toString();
    }   
    return contentReturn;
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我得到像"javax.mail.internet.MimeMultipart@44f12450"这样的胡言乱语.

任何人都可以看到我错在哪里?

谢谢,里斯

Ane*_*ran 9

以上建议均无效.你不需要在这里做任何复杂的事情.Mimemessage有message.writeTo(outputStream);

您打印邮件所需的只是:

message.writeTo(System.out);
Run Code Online (Sandbox Code Playgroud)

上面的代码会将实际的mime消息打印到控制台(或者你可以使用任何记录器).

将内容保存到.eml,您可以在Outlook中打开它.就那么简单!


Fem*_*emi 0

不完全确定,但听起来您想要将 MimeMessage 转换为字符串。严格来说,MimeMessage 到 String 没有“标准”翻译,但这里有一段我​​几年前编写的代码,试图生成这样的翻译。仅在英文消息上进行了测试,因此 i18n 必须是您自己考虑的内容。

不幸的是,SO 的愚蠢过滤器似乎认为我的代码示例是一个图像,并且不允许我发布它:看看http://pastebin.com/pi9u5Egq上的类:代码正在做一堆其他不必要的事情(它会将其吐出为使用飞碟呈现的 HTML),并且还需要 Jakarta Commons Lang、javamail 和激活库,但它对我有用。你可以像这样调用它:

fetchText(message, null, false, false);
Run Code Online (Sandbox Code Playgroud)

获取文本字符串。尝试一下尺寸。