javamail访问共享邮箱

d33*_*33j 6 java jakarta-mail

我正在尝试编写一个 java 应用程序,它将访问一个额外的共享邮箱来阅读电子邮件和执行其他活动。我阅读自己的收件箱(或其文件夹和内容)没有问题,但很难找到有关如何访问(并最终解析/读取)共享邮箱的信息。

Tom*_*olk 6

在其他答案的帮助下,我找到了以下解决方案,适用于 com.sun.mail:javax.mail:1.6.2

Properties props = new Properties();
props.setProperty("mail.imaps.auth.mechanisms", "LOGIN");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "user@xyz.com\\shared_account_alias", "user_password");
Run Code Online (Sandbox Code Playgroud)

使用 javax.mail:mail:1.4.7 以下代码有效:

Properties props = new Properties();
props.setProperty("mail.imaps.auth.plain.disable", "true");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "user@xyz.com\\shared_account_alias", "user_password");
Run Code Online (Sandbox Code Playgroud)

shared_account_alias 不是电子邮件地址。

最终我找到了一种更标准的访问共享邮箱的方法:

Properties props = new Properties();
props.setProperty("mail.imaps.sasl.enable", "true");
props.setProperty("mail.imaps.sasl.authorizationid", "shared_account_alias");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "user@xyz.com", "user_password");
Run Code Online (Sandbox Code Playgroud)


Tar*_*pal 5

我正在执行以下操作,对我来说效果很好

properties = System.getProperties();
properties.setProperty("mail.imaps.auth.plain.disable", "true");
properties.setProperty("mail.imaps.auth.ntlm.disable", "true");
Session session = Session.getInstance(properties, null);
store = session.getStore("imaps");
store.connect("HOST", PORT, "DOMAIN\\USER\\SHAREDACCOUNT","pwd");
Run Code Online (Sandbox Code Playgroud)

这里的 DOMAIN\\USER\\SHAREDACCOUNT 就像这样
假设电子邮件帐户是 tarun@abc.com 然后
abc\\tarun\\shared_MB

您还必须输入 tarun@abc.com 帐户的密码。