记录一个奇怪的错误,javax.mail.MessagingException: Failed to load IMAP envelope(Android development)

时间:2021-12-17 18:15:34

前言


遇到问题,多沟通,冷静分析,即能解决!

错误截图


记录一个奇怪的错误,javax.mail.MessagingException: Failed to load IMAP envelope(Android development)
记录一个奇怪的错误,javax.mail.MessagingException: Failed to load IMAP envelope(Android development)

上面两个图就是出现这个错误的log,我用的是JavaMail1.6.0正式版,使用IMAP收取公司邮箱邮件的时候出现的这个问题,可以看到错误均指向"MailParse"这个类里面的88行,这个方法是获取该邮件发件人邮箱地址信息,我使用的是getFrom,当然后来我尝试替换成getHeader("From")效果是一样的。 我一页收取的是20条数据,断点调试到第18封邮件时报的这个错误,奇怪的是,这个时候第18封邮件getHeader头信息里面竟然没有"From"的信息,而且此时已经报了javax.mail.MessagingException: Failed to load IMAP envelope,当时的写法是try-catch块,捕捉到的错误就是javax.mail.MessagingException: Failed to load IMAP envelope

javax.mail.MessagingException: Failed to load IMAP envelope 资料查询


上网搜索了下,发现这个错误很多,但都是不了了之,很迷惑,但是我还是搜索到了一点信息
https://*.com/questions/19112579/how-to-get-rid-of-failed-to-load-imap-envelope-messaging-exception

这篇博客有明确的指向,可以看到Bill的回复,翻译成中文如下:
“你的服务器坏了 请将此错误报告给服务器供应商。 你使用什么服务器?


在响应中,消息的“To”值必须符合规范中定义的此语法:


env-to =“(”1 * address“)”/ nil
address =“(”addr-name SP addr-adl SP addr-mailbox SP addr-host“)”
相反,服务器已返回“()”。 如果没有To头,它应该返回“NIL”。


您可以使用JavaMail FAQ中描述的技术解决服务器错误。”

确实是服务器坏了,
还有这篇官方对此bug的描述:
https://community.oracle.com/thread/1589332

可以看到Bill说,这个服务器的一个bug,请提交这个问题到IBM公司.
这个是官方记录的常见的JavaMail的错误,不过感觉很鸡肋,将就着看吧!



我发布到*上的问题


上面这个链接是我昨天在*上发表的问题,但是并没有解决我的什么问题,外国小哥说我,wrong way,but 其他邮箱是可以的啊,暂且记录下这个奇怪的问题吧,JavaMail真的是坑很多,不急,慢慢踩记录一个奇怪的错误,javax.mail.MessagingException: Failed to load IMAP envelope(Android development)记录一个奇怪的错误,javax.mail.MessagingException: Failed to load IMAP envelope(Android development)

20170823复现更新


今天下午又出现了这个错误,我发现就我用账号有问题(我自己的企业邮箱),其他人的账号均没有问题,网易等账号也没有这个问题,而且在我调试的时候,发现邮件数量明显不对,web端明显到4月份了,而我用Javamail客户端收取的才到7月24号,后来我到web端查看了下,我发现我勾选了这个选项 记录一个奇怪的错误,javax.mail.MessagingException: Failed to load IMAP envelope(Android development) 这样客户端只能拉取最近30天的邮件,我又算了一下,7月24号到今天8月23正好一个月,我说怎么邮件只能显示到7月24号;
另外可以很合理的解释了,为什么Javamail报的错误信息为javax.mail.MessagingException: Failed to load IMAP envelope,意思就是无法加载信封,因为你限制了这个时间,只能拉取最近30天的邮件,所以之后的邮件你是拉取不了,修改为“收取全部”后,问题解决,完美,开心!