谁有解决方案?
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
修改源码的方式,大哥你可以分享下啊,网易确实很特殊啊,有点恶心.