javamail 接收126邮箱邮件问题

谁有解决方案?

 Folder folder = store.getFolder("INBOX");
 folder.open(Folder.READ_WRITE);

Caused by: com.sun.mail.iap.CommandFailedException: A3 NO SELECT The login is not safe! Please update your mail client: http://mail.163.com/dashi
at com.sun.mail.iap.Protocol.handleResult(Protocol.java:396)
at com.sun.mail.imap.protocol.IMAPProtocol.select(IMAPProtocol.java:1184)
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:1030)

自己解决了,改了javamail源码,open folder前发送了 ID command

上面说一个不安全的请求被阻止了,要求更新mail客户端为邮箱大师, 你可以看下这个http://mail.163.com/html/notice/2014/notice_1201.htm ,

我现在找到资料如下:

 So what does that workaround do? IMAP command is usually in the format
1 CAPABILITY 
2 LOGIN USERNAME PASSWORD 
3 CAPABILITY 
4 LIST "" "" 
5 ID NIL 
6 SELECT INBOX  
but 163 required a “C” before each command, eg
C1 CAPABILITY
so the fix is… add “C”.
To apply to Javamail, we need to modify the Protocol object’s writeCommand method and use a “C” prefix for 163 (also 126.com, yeah.net) imap host address.

但是要做到这点,要么修改javamail源码重新编译,要么用asm这样的东西修改字节码,都太麻烦,需要一些简便的技巧。

可以看看这篇博客,

http://blog.csdn.net/shenshibaoma/article/details/69396696

修改源码的方式,大哥你可以分享下啊,网易确实很特殊啊,有点恶心.