无法在MSExchange上使用javax.mail读取电子邮件的html正文

时间:2013-05-28 07:29:11

标签: html javamail exchange-server

我在阅读收件箱时有以下代码:

Properties props = System.getProperties();              
props.setProperty("mail.store.protocol", inboxSettings.Protocol);
Session session = Session.getDefaultInstance(props, null);
store = session.getStore(inboxSettings.Protocol);
store.connect(inboxSettings.Host,inboxSettings.Username, readPassword(inboxSettings.PasswordPath));

inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_WRITE);

Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.CONTENT_INFO);
inbox.fetch(messages, fp);
for (int i = 0; i < messages.length; i++)
{
    MimeMultipart mimeMultipart = (MimeMultipart) messages[i].getContent();
    BodyPart bodyPart = mimeMultipart.getBodyPart(i);
}

我遇到的问题是所有的html电子邮件都是纯文本。我无法获得消息的html标记。我需要以相同的html格式转发这些消息。 当我从谷歌阅读相同的电子邮件时,格式是不同的,它是多部分/替代,我搜索第一个多部分,找到纯文本和HTML。 在MS Exchange上,我只获得纯文本。

任何人都知道这是关于什么的? 谢谢

1 个答案:

答案 0 :(得分:0)

Exchange习惯将消息重新格式化为它认为应该是的内容,忽略实际发送的内容。如果您可以控制邮件服务器,则可以更改某些设置以帮助解决此问题。否则,你会遇到Exchange给你的东西。如果它没有给你内容的html版本,那么你无能为力。但是,您可能希望使用msgshow.java演示程序来转储消息的整个内容,以确保html内容不在某处,而您只是无法正确访问它。