java - IMAP:(JavaMail)UIDVALIDTY 值总是更改某些文件夹

标签 java email jakarta-mail imap

我们已经使用 JavaMail api 实现了一个邮件客户端,它连接到邮件服务器以处理 IMAP 协议(protocol)中的消息。该实现在许多客户和邮件服务器上运行良好,但我们有一个客户有问题,

UIDVALIDTY:为了确定我们是否可以依赖文件夹中邮件的 UID 值,我们存储了每个文件夹的最新 UIDVALIDTY。在下一个过程中,我们将最近的存储值与当前值进行比较。如果它们相同,我们可以依赖 UID。 IMAP 规范要求服务器尽力避免对此值进行不必要的更改。 (邮件服务器崩溃、重启、升级等除外)

在这个特定客户的邮件服务器上,某些文件夹的 UIDVALIDTY 值每次都会更改。测试帐户有 300 个文件夹,其中 15 个始终是相同的特定定义文件夹,始终具有不同的 UIDVALIDTY 值。

这可能是什么原因?有邮件服务器设置吗?我认为它超出了java mail api的范围,它是邮件服务器相关的。客户说我们的邮件服务器没有问题,我们可以在我们的网络界面上使用它。我如何才能说服客户他们的邮件服务器出现问题?

最佳答案

一些邮箱格式没有空间来存储 UID,我认为一些仍在使用的服务器支持这种格式。 Dovecot 特别支持许多存储格式,IIRC 包括不支持 UID 的格式。

如果服务器必须这样做,它会 send you a UIDNOTSTICKY response code when you open the mailbox从那时起,它会凭空变出新的 UIDS。您可能会检测到 UIDNOTSTICKY 并拒绝玩游戏,或者只是将其视为测试您的有效性更改处理的机会。

关于java - IMAP:(JavaMail)UIDVALIDTY 值总是更改某些文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43223958/

相关文章:

Java 动画

java - 如何使用另一个类的变量?

java windows桌面邮件主题字符串错误

regex - 电子邮件子域匹配的正则表达式

email - 替代 0px 图像(又名网络信标)

机器人 : mail send using javamail smtp tls is not getting saved in sent folder of icloud account

java - 接收可序列化对象并显示内容

android - javax.mail.util.SharedByteArrayInputStream 无法转换为 javax.mail.Multipart

ssl - sun.security.ssl.SSLSessionImpl payara 5

java - 如何从 .class 制作 .jar