She*_*erd 3 java email outlook jakarta-mail
我需要阅读超过 3000 封邮件的邮箱。我需要阅读这些邮件,获取它们的邮件内容并将正文输入到另一个 api 中。用几封邮件很容易做到(对我来说大约是 250 封),但在那之后它明显变慢了。此链接中接受的答案 是唯一的选择,还是有其他替代方法。
注意:我故意不粘贴任何片段,因为我使用了直接的方法,是的,我也使用了 FetchProfile。
JavaMail IMAP 性能通常受服务器速度、所需的网络往返次数和读取的数据量控制。使用FetchProfile对于减少往返次数至关重要。不要忘记考虑特定于IMAP 的 FetchProfile 项目。
JavaMail 将一次获取一个缓冲区的消息内容。大消息显然需要多次缓冲区提取,因此需要多次往返。您可以通过设置该mail.imap.fetchsize属性来更改缓冲区的大小(默认为 16K)。或者,您可以通过将mail.imap.partialfetch属性设置为 false来禁用这些部分提取并要求它在一次操作中提取全部内容。显然,如果正在读取大消息,后者将需要客户端上的大量内存。
JavaMail IMAP 提供程序不会(通常;见下文)在客户端缓存消息内容,但它会缓存消息头。在处理大量消息时,通过调用IMAPMessage.invalidateHeaders方法在处理完消息后使标头缓存无效有时会有所帮助。使用IMAPFolder.FetchProfileItem.MESSAGE 时,消息内容会被缓存,也会被上述调用失效。
除此之外,您应该检查JavaMail 调试输出以确保只发出预期的 IMAP 命令,并且您没有在程序中执行会导致它发出不必要的 IMAP 命令的操作。您还可以查看协议命令的时间戳,以确定时间是花在服务器上还是客户端上。
只有在所有这些都未能产生可接受的性能之后,并且您确定性能问题不在服务器上(您无法修复),您才需要按照您引用的链接中的建议查看自定义 IMAP 命令到。
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |