Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果邮件收件箱中的邮件数超过int范围,会发生什么情况?_Java_Email_Jakarta Mail - Fatal编程技术网

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

Java 如果邮件收件箱中的邮件数超过int范围,会发生什么情况?,java,email,jakarta-mail,Java,Email,Jakarta Mail,我必须经常阅读使用POP3的JavaMail的新电子邮件 我将实施这样的解决方案: 统计所有邮件(一次,在应用程序开始时) 将lastdread设置为邮件编号 定期轮询收件箱,然后: 清点所有邮件并检查其数量是否大于lastRead 如果是,请阅读新邮件并更新lastdead 它在小样本下运行良好,但我想知道如果服务器上的邮件数超过2147483647会发生什么 我发现,如果我删除邮件(从公共客户机),它不会影响服务器返回到JavaMail的邮件数量或它们的数量。但是如果邮箱溢出怎么办?

我必须经常阅读使用POP3的JavaMail的新电子邮件

我将实施这样的解决方案:

  • 统计所有邮件(一次,在应用程序开始时)
  • lastdread
    设置为邮件编号
  • 定期轮询收件箱,然后:
    • 清点所有邮件并检查其数量是否大于
      lastRead
    • 如果是,请阅读新邮件并更新
      lastdead
它在小样本下运行良好,但我想知道如果服务器上的邮件数超过2147483647会发生什么

我发现,如果我删除邮件(从公共客户机),它不会影响服务器返回到JavaMail的邮件数量或它们的数量。但是如果邮箱溢出怎么办?我必须停止并再次启动应用程序吗


Folder的方法将
int
s作为参数(我考虑使用
getMessages
)。邮箱有可能有这么多邮件吗?或者这些ID只是以某种方式重置?但这对我的应用程序也不太好。

显然,由于JavaMail使用Java int来表示消息编号,如果有超过2^31-1条消息,它就不起作用了。对于任何一个真正的邮箱来说,这种情况似乎都不太可能发生。如果你开始每秒收到一条新的信息,你仍然需要68年才能达到这个数字。如果您的应用程序中存在这种可能性,则应管理邮箱,使其不会变得那么大,例如,删除邮件或将其移动到存档邮箱中(这需要使用IMAP)


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

Max
int
远高于32767。是2^31-1。@Eran谢谢。但这个问题仍然没有答案;)有
多线程
this@BurakAky你能不能再写一些关于这个的东西?好的,但假设我有100条信息(例如),从1到100的数字。如何使用邮箱“重置”此邮箱?如果我删除这些消息,我假设新消息的id仍然是101。所以它不适用于我的问题。如果我能做些什么来重置这个id号,我必须首先停止我的应用程序,因为我记得在应用程序中,100是最后读取的消息,所以应用程序不会处理新消息。你把消息(序列)号与UID混淆了。消息编号是整数,UID是长的,因此UID可以增长到2^63-1。你永远不会用完。但是我怎么能用UID呢?我应该这样做吗?因为现在我只打算使用messages ID.POP3有自己的UID类型,但它们是字符串而不是数字。有关详细信息,请参阅com.sun.mail.pop3包的javadocs。希望java.net网站的重定向很快就能实现。