使用imap协议链接163邮箱
链接邮箱报错
Caused by: javax.mail.MessagingException: A4 NO SELECT Unsafe Login. Please contact kefu@188.com for help
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:1049) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:977) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.cincc.im.mail.receiver.MailListener.initConnect(MailListener.java:68) ~[classes/:?]
at com.cincc.im.mail.receiver.MailListener.listener(MailListener.java:113) ~[classes/:?]
at com.cincc.im.mail.receiver.MailListener.asyncListener(MailListener.java:104) ~[classes/:?]
at com.cincc.im.mail.receiver.MailListenerRunner.run(MailListenerRunner.java:25) ~[classes/:?]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE]
... 5 more
Caused by: com.sun.mail.iap.CommandFailedException: A4 NO SELECT Unsafe Login. Please contact kefu@188.com for help
at com.sun.mail.iap.Protocol.handleResult(Protocol.java:412) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.sun.mail.imap.protocol.IMAPProtocol.select(IMAPProtocol.java:1230) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:1034) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:977) ~[jakarta.mail-1.6.7.jar:1.6.7]
at com.cincc.im.mail.receiver.MailListener.initConnect(MailListener.java:68) ~[classes/:?]
at com.cincc.im.mail.receiver.MailListener.listener(MailListener.java:113) ~[classes/:?]
at com.cincc.im.mail.receiver.MailListener.asyncListener(MailListener.java:104) ~[classes/:?]
at com.cincc.im.mail.receiver.MailListenerRunner.run(MailListenerRunner.java:25) ~[classes/:?]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE]
... 5 more
解决办法
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.host", "imap.163.com");
props.setProperty("mail.imap.port", "143");
HashMap IAM = new HashMap();
//带上IMAP ID信息,由key和value组成,例如name,version,vendor,support-email等。
IAM.put("name","myname");
IAM.put("version","1.0.0");
IAM.put("vendor","myclient");
IAM.put("support-email","testmail@test.com");
Session session = Session.getInstance(props);
IMAPStore store = (IMAPStore) session.getStore("imap");
//下方替换对应帐号和授权码
store.connect("testmail@163.com", "password");
store.id(IAM);
相关规范链接请参考:
https://www.ietf.org/rfc/rfc2971.txt
https://javaee.github.io/javamail/docs/api/index.html?com/sun/mail/imap/IMAPStore.html
(请使用JavaMail 1.5.1及更新的版本)