天天看点

Failed to load IMAP envelope解决办法

最近在开发一个发送、接收邮件的功能,发送邮件采用的是阿里云的邮件服务,用于推送公司的一些业务邮件,邮件回复地址是腾讯企业邮箱,在收件时采用的是imap协议,开发时可以正常的获取收件箱内的邮件,但是测试时却报了以下错误

javax.mail.MessagingException: Failed to load IMAP envelope
at com.sun.mail.imap.IMAPMessage.loadEnvelope(IMAPMessage.java:)
at com.sun.mail.imap.IMAPMessage.getSubject(IMAPMessage.java:)
           

经过debug发现是在com.sun.mail.imap.IMAPMessage的1240行的判断未通过,导致envelope为null,从而抛出错误

if (r[i] == null ||
    !(r[i] instanceof FetchResponse) ||
    ((FetchResponse)r[i]).getNumber() != seqnum)
    continue;
           

在网上也查找了很多文章,对这个问题并没有什么明确的分析,本人从结果上看,通过smtp发送(程序)的邮件不能用imap接收,限于时间问题,未再深入研究出现原因,只是将收件方式替换为了pop3,目前测试是ok的,未再出现异常情况。

需要注意的是服务邮件内的客户端设置可能需要进行响应的调整,如腾讯企业邮箱:设置-客户端设置-收取选项-收取“30”天的邮件,需要调整为收取所有邮件。

继续阅读