0

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

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 上,我只得到纯文本。

有谁知道这是怎么回事?谢谢

4

1 回答 1

0

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

于 2013-05-28T19:34:46.730 回答