我正在尝试编写一个java应用程序,该应用程序将访问其他共享邮箱以读取电子邮件并执行其他活动。我没有问题阅读我自己的INBOX(或其文件夹和内容),但很难找到有关如何访问(并最终解析/读取)共享邮箱的信息。
答案 0 :(得分:3)
我正在做以下事情,它对我来说很好用
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");
下面 DOMAIN \\ USER \\ SHAREDACCOUNT就像这样 假设电子邮件帐户是tarun@abc.com然后是 ABC \\塔伦\\ shared_MB
您还必须输入tarun@abc.com帐户的密码。
答案 1 :(得分:2)
Tarun给出的解决方案。但重要的注意事项是使用共享帐户的别名而不是共享帐户的实际电子邮件地址。 所以实际的格式是: store.connect(DOMAIN,“USER@xyz.com \ SHARED_ACCOUNT_ALIAS”,“USER_PASSWORD”);
答案 2 :(得分:1)
在其他答案的帮助下,我找到了适用于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");
使用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");
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");