如果邮件收件箱中的邮件数超过int范围会发生什么?

时间:2017-05-15 09:24:08

标签: java email javamail

我必须使用POP3使用JavaMail不断阅读新的电子邮件。

我打算实施这样的解决方案:

  • 统计所有邮件(一次,在申请开始时)
  • lastRead设为邮件编号
  • 定期轮询收件箱,然后:
    • 统计所有邮件并检查其号码是否大于lastRead
    • 如果是,请阅读新邮件并更新lastRead

它在小样本上工作正常,但我想知道如果服务器上的邮件数量超过2147483647会发生什么。

我看到如果我删除邮件(来自普通客户端),它对服务器返回给JavaMail或其号码的邮件数量没有影响。但是如果邮箱会溢出怎么办?我是否必须停止并重新开始申请?

文件夹的方法有int个作为参数(我想我使用的getMessages)。邮箱是否有可能有这么多消息?或者这些ID可能只是以某种方式重置?但这对我的申请也不会有好处。

1 个答案:

答案 0 :(得分:1)

显然,由于JavaMail使用Java int来表示消息编号,如果有超过2 ^ 31-1个消息,它将无法工作。对于任何真正的邮箱而言,这似乎不大可能发生。如果您每秒开始收到一条新消息,那么在您达到该数字之前仍然需要68年。如果您的应用程序具有实际可能性,则应管理邮箱,使其永远不会变大,例如删除邮件或将邮件移动到存档邮箱(这需要使用IMAP)。

(多线程与此无关;我不知道Burak在想什么。)