JavaMail IMAPFolder.getMessageByUID 获取QQ和腾讯企业邮箱新邮件的问题
来源:互联网 发布:武汉大学网络教育平台 编辑:程序博客网 时间:2024/04/29 19:32
前言:做任何事,不要放弃,静下心来找到最好的解决方案,会有柳暗花明的那天!
最近在做邮箱,我们用的是java mail 1.5.6,有个需求是根据邮件的uid来和本地数据库的邮件比对,得到最新邮件的uid数组,从而拉取最新的邮件列表,问题就出在这里,网易163,邮箱可以使用IMAPFolder.getMessageByUID获取到最新的邮件对象message,而使用扣扣和自己公司的邮箱虽然可以获取到对象数量,但是debug的信息是“All element is null”,即对象数组下的元素均是空的,然后就一顿乱搜,找到了前人的帖子,链接奉上:http://www.itnose.net/detail/6113852.html.
跟这个帖子上遇到的问题一模一样,打开session的debug log如下图所示:
可以看到上面的2579 FETCH (UID 2904 )对应的其实是最新的邮件,咱们已经获取到了,2579到2582这四封的邮件,接着往下看,就在解析的时候,出现ParsingException,这四个解析的错误一样,这个错误出现了四次(因为最新的邮件就是四封),上面的博客,相信大家已经看了,其他就是Java mail在FETCH UID的时候,右边括弧里边多了个空格,导致java mail解析出错(我的内心是崩溃的,这有点低级的错误,java mail怎么能错),没办法,按照帖子上那哥们的做法,需要修改java mail源码,这个就略过吧.
最后是这样的,换了一个jar包,我发现java mail还一直有在维护,就下载了一个1.6.0时间戳为2017年3月3号的测试版,重新替换1.5.6版后,修改gradle,clean项目,重新运行,惊喜的发现解决了上述问题,那个Parse解析的问题java mail 也给修复了,给java mail团队点赞,额,研究了一天,发现,最后就替换了个jar包,坑也算是踩遍了,确实这里面的相关资料太少,希望大家不要踩坑吧!
jar包的链接如下,说是17年夏天发布1.6.0的正式版吧,期待有更多好用的功能和api
https://maven.java.net/content/repositories/snapshots/com/sun/mail/javax.mail/1.6.0-SNAPSHOT/
官网的翻译:
不时开发的下一个JavaMail版本的快照版本将发布到java.net Maven存储库。 这些快照版本只收到最少的测试,但可能会提供错误修复或正在开发的 新功能的预览。
例如,您可以从JavaMail 1.6.0-SNAPSHOT版本中下载javax.mail.jar文件。 确保滚动到底部,并选择具有最新时间戳的jar文件。
JavaMail 1.6.0的Release Candidate版本现已推出。 这是适用于测试的JavaMail 1.6.0的非最终开发版本。 鼓励您对此版本的反馈。 JavaMail 1.6.0 的最终版本预计在今年夏天。
- JavaMail IMAPFolder.getMessageByUID 获取QQ和腾讯企业邮箱新邮件的问题
- JavaMail使用getMessageByUID方法获取腾讯邮箱失败的解决方法
- 腾讯QQ企业邮箱设置
- javamail实现腾讯邮箱(企业邮箱,qq邮箱)发送邮件(多收件人多附件)
- Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
- Java + 腾讯企业邮箱 + javamail发送邮件
- javamail+腾讯企业邮箱SSL协议发送,javamail 邮件发送
- javamail+腾讯企业邮箱SSL协议发送,javamail 邮件发送
- 使用腾讯企业邮箱调用SpringMail或者JavaMail发送邮件的发送服务器设置
- 腾讯QQ企业邮箱POP3/SMTP设置
- 腾讯QQ企业邮箱POP3/SMTP设置
- 腾讯QQ企业邮箱POP3/SMTP设置
- 腾讯QQ企业邮箱POP3/SMTP设置
- 腾讯QQ企业邮箱POP3/SMTP设置
- 腾讯QQ企业邮箱POP3/SMTP设置
- javaMail判断新邮件
- 腾讯企业邮箱
- 腾讯企业邮箱
- 实现侧滑栏的三种形式
- UVALive 6436 The Busiest City (树形DP)
- Java学习-将Vector转化为数组
- java 浅谈get与post的区别
- 剑指offer前10题
- JavaMail IMAPFolder.getMessageByUID 获取QQ和腾讯企业邮箱新邮件的问题
- Add Two Numbers
- springMVC编码过滤器只对post方法有效的解决方法
- 深入mysql并发插入优化详解
- POJ 2488 A Knight's Journey
- 自定义SeekBar细节记录
- tranlating embedding 算法的一些理解
- 507. Perfect Number
- java 无法显示收到的文本原因