我正在使用 JavaMail 1.5.2 读取来自 IMAP 帐户的邮件。为了减少对主机的请求数量,我预取了一些消息数据,例如发件人、日期、消息 ID 等:
Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_ONLY);
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.CONTENT_INFO);
fp.add("Message-ID");
Message msgs[] = folder.getMessages();
folder.fetch(msgs,fp);
但是,我也想预取some部分内容来创建邮件的预览文本,而无需加载包含所有附件的完整邮件。例如,我想预取类型为“text/plain”并且没有附件的内容的所有部分。那可能吗?
PS:我不是在寻找像这样的解决方案fp.add(IMAPFolder.FetchProfileItem.MESSAGE)
因为这将预取whole带有所有附件的消息。
你必须检索身体结构首先,然后循环遍历消息结构,检查每个部分的 mime 类型,并下载所需的部分。 IMAP 允许您使用一个命令下载所有部分,因此如果 Javamail 有点聪明,您应该能够使用两个 IMAP 命令来完成此操作,无论您最终想要下载多少正文部分。
如果您是喜欢查看有线流量的人,IMAP 命令应该类似于a uid fetch 234789 bodystructure
其次是b uid fetch 234789 (body.peek[1.1] body.peek[2])
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)