求助 Java 用 imap 收取 outlook 邮件

101 天前
 i4color
各位大神:

就是最基本的收取模式。
直接用邮箱和密码去收取,
但成功率很低,有时候可以,有时候就直接报
A1 NO AUTHENTICATE failed

代码如下

// 设置 Outlook 邮件服务器和协议
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.host", "outlook.office365.com");
props.put("mail.imap.starttls.enable", false);
props.put("mail.imap.ssl.enable",true);
props.put("mail.debug", "true");
props.put("mail.debug.auth", "true");

// 创建会话
Session session = Session.getInstance(props, null);
session.setDebug(true);

// 连接到 Outlook 邮箱
Store store = session.getStore();
store.connect("xxxxx@outlook.com", "邮箱密码");

// 打开收件箱
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

// 获取收件箱中的邮件
Message[] messages = inbox.getMessages();

for (Message message : messages) {
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Content: " + message.getContent());
}

// 关闭收件箱和连接
inbox.close(false);
store.close();



按官方的说法,应该改为 oauth2.0 去收取,但做到 oauth2 还要注册应用程序,一大堆。
我看 thunderbird mozilla 的邮件客户端 去收取 outook 邮件时,也只要填写邮箱密码,然后弹出 outlook 登陆即可。不需要常规的 oauth 的客户 id,密钥之类的


求各位大神帮我指点迷津。
971 次点击
所在节点    Java
3 条回复
julyclyde
97 天前
你也知道“弹出 outlook 登录”了啊
i4color
87 天前
可以了,是 outlook 的 imap 有问题,换成 pop3 就可以了。
zhangjiashu2023
21 天前
现在呢,是不是 pop3 都不行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1060096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX