我必须使用 POP3 使用 JavaMail 不断阅读新电子邮件。
我要实现这样的解决方案:
- 统计所有邮件(一次,在申请开始时)
- 设置
lastRead
为邮件编号 - 定期轮询收件箱,然后:
- 统计所有邮件并检查它们的数量是否大于
lastRead
- 如果是,阅读新邮件并更新
lastRead
- 统计所有邮件并检查它们的数量是否大于
它在小样本上工作正常,但我想知道如果服务器上的邮件数量超过 2147483647 会发生什么。
我看到如果我删除邮件(从普通客户端),它不会影响服务器返回到 JavaMail 的邮件数量或它们的数量。但是如果邮箱会溢出怎么办?我是否必须停止并重新开始申请?
Folder 的方法将 int
作为参数(我想到了我使用的 getMessages
)。邮箱有可能有这么多消息吗?或者也许这些 ID 只是以某种方式重置?但这也不适合我的申请。
最佳答案
显然,由于 JavaMail 使用 Java int 来表示消息编号,如果消息超过 2^31-1,它就无法工作。对于任何真实邮箱来说,这似乎极不可能发生。如果你开始每秒收到一条新消息,那么你仍然需要 68 年才能达到这个数字。如果您的应用程序存在这种可能性,您应该管理邮箱,使其永远不会变得那么大,例如,通过删除邮件或将它们移动到存档邮箱(这需要使用 IMAP)。
(多线程与此无关;我不知道 Burak 在想什么。)
关于java - 如果收件箱中的邮件数量超过 int 范围会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43975745/