admin管理员组文章数量:1530043
场景:
在通过java代码读取邮件的方式有pop3和imap两种方式,但是在使用imap时,会报一个如下的异常:
A3 NO SELECT Unsafe Login. Please contact kefu@188 for help异常处理
原因:
意思就是说:这不是一个安全的连接,其实是网易没有遵循IMAP的规范,它强制要求你使用IMAP的ID命令,需要特色添加ID COMMAND
解决方式:
添加imap的id,然后再去读取邮件就好用了。具体的实现方式如下,我直接放上代码:
public static List<DefaultMailReciver> reciveWithImap() throws Exception {
String user = "你的邮箱@163";// 邮箱的用户名
String password = "设置里面的授权的密码,不是你登录邮箱的那个密码昂"; // 邮箱的密码
Properties prop = System.getProperties();
prop.put("mail.store.protocol", "imap");
prop.put("mail.imap.host", "imap.163");
prop.put("mail.smtp.auth", "true");
//这部分就是解决异常的关键所在,设置IAMP ID信息
HashMap IAM = new HashMap();
//带上IMAP ID信息,由key和value组成,例如name,version,vendor,support-email等。
// 这个value的值随便写就行
IAM.put("name","myname");
IAM.put("version","1.0.0");
IAM.put("vendor","myclient");
IAM.put("support-email","testmail@test");
Session session = Session.getInstance(prop);
// 使用imap会话机制,连接服务器
int total = 0;
IMAPStore store = (IMAPStore) session.getStore("imap");
store.connect(user, password);
store.id(IAM);
IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱
folder.open(Folder.READ_WRITE);
// 获取总邮件数
total = folder.getMessageCount();
System.out.println("-----------------共有邮件:" + total + " 封--------------");
// 得到收件箱文件夹信息,获取邮件列表
System.out.println("未读邮件数:" + folder.getUnreadMessageCount());
Message[] messages = folder.getMessages();
int messageNumber = 0;
for (Message message : messages) {
System.out.println("发送时间:" + message.getSentDate());
System.out.println("主题:" + message.getSubject());
System.out.println("内容:" + message.getContent());
Flags flags = message.getFlags();
if (flags.contains(Flags.Flag.SEEN)) {
System.out.println("这是一封已读邮件");
} else {
System.out.println("未读邮件");
}
//每封邮件都有一个MessageNumber,可以通过邮件的MessageNumber在收件箱里面取得该邮件
messageNumber = message.getMessageNumber();
}
Message message = folder.getMessage(messageNumber);
System.out.println(message.getContent() + message.getContentType());
// 释放资源
if (folder != null) {
folder.close(true);
}
if (store != null) {
store.close();
}
return null;
}
这样就可以解决问题了。
参考文献:
http://help.mail.163/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac211b1978002df8b23(官网给出的解决方式,也就是我代码中的部分)
本文标签: 异常selectunsafeSpringBootkefu
版权声明:本文标题:【SpringBoot】A3 NO SELECT Unsafe Login. Please contact kefu@188.com for help异常处理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726640752a1079613.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论