gpt4 book ai didi

JavaMail API - 读取大型 outlook 邮箱 (>3000) 的邮件内容

转载 作者:行者123 更新时间:2023-11-29 04:24:16 25 4
gpt4 key购买 nike

我有一个需求,需要读取一个超过 3000 封邮件的邮箱。我需要阅读这些邮件,获取他们的邮件内容并将正文提供给另一个 api。处理几封邮件很容易(对我来说大约是 250 封),但之后速度明显变慢。 link 中接受的答案是唯一的选择,还是有其他替代方法。

注意:我特意没有粘贴任何片段,因为我使用了直接的方法,是的,我也使用了 FetchProfile。

最佳答案

JavaMail IMAP 性能通常由服务器的速度、所需的网络往返次数以及读取的数据量控制。使用 FetchProfile对于减少往返次数至关重要。不要忘记考虑 IMAP-specific FetchProfile items .

JavaMail 将一次获取一个缓冲区的消息内容。大消息显然需要多次缓冲区提取,因此需要多次往返。您可以通过设置 mail.imap.fetchsize 来更改缓冲区的大小(默认 16K)属性(property)。或者您可以通过设置 mail.imap.partialfetch 来禁用这些部分提取并要求它在一次操作中提取全部内容。属性为假。显然,如果正在读取大消息,后者将需要客户端上的大量内存。

JavaMail IMAP 提供程序不会(通常;见下文)在客户端缓存消息内容,但会缓存消息头。当处理大量消息时,通过调用 IMAPMessage.invalidateHeaders 来使消息头缓存无效有时会很有帮助。方法。使用 IMAPFolder.FetchProfileItem.MESSAGE 时, 消息内容是缓存的,也会被上面的调用作废。

除此之外,您应该检查 JavaMail debug output以确保只发出预期的 IMAP 命令,并且您没有在程序中执行会导致它发出不必要的 IMAP 命令的操作。您还可以查看协议(protocol)命令的时间戳,以确定时间是花在服务器上还是客户端上。

只有在所有这些都未能产生可接受的性能之后,并且您确定性能问题不在服务器上(您无法修复),您才需要按照建议查看自定义 IMAP 命令您提到的链接。

关于JavaMail API - 读取大型 outlook 邮箱 (>3000) 的邮件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47211300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com