如何使用Java应用程序中的IMAPS协议连接到office365
问题描述:
这里有几篇文章,但其中没有一篇适合我。基本上我有以下java代码连接到办公室365:如何使用Java应用程序中的IMAPS协议连接到office365
Properties props = new Properties();
props.put("mail.imaps.auth.plain.disable", "true");
props.put("mail.imaps.ssl.enable", "true");
session = Session.getInstance(props, null);
store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "[email protected]", "psw");
但它失败,LOGIN失败的错误;
javax.mail.AuthenticationFailedException: LOGIN failed.
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:725)
at javax.mail.Service.connect(Service.java:366)
此外,我可以使用Thunderbird的IMAPS登录我的帐户。
任何解决问题的指针,将不胜感激!
答
此代码适用于Outlook,我已将其修改为与Office365一起使用。我做了研究,以找到办公室365的IMAP主机。我希望它可以帮助你。
public static void main(String[] args) throws MessagingException {
MultiPartEmail email = new MultiPartEmail();
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
//extra codes required for reading OUTLOOK mails during IMAP-start
props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.port", "993");
props.setProperty("mail.imaps.socketFactory.port", "993");
//extra codes required for reading OUTLOOK mails during IMAP-end
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", "[email protected]", "mypassword");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
inbox.addMessageCountListener(new MessageCountListener() {
@Override
public void messagesAdded(MessageCountEvent messageCountEvent) {
Message[] messages = messageCountEvent.getMessages();
System.out.println("A message was added, you now have: " + messages.length + " emails");
}
@Override
public void messagesRemoved(MessageCountEvent messageCountEvent) {
}
});
while (true) {
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
inbox.getMessageCount(); // Keeps connection alive
}
}
答
事实证明,Office 365拒绝连接是因为密码中不支持的字符。特别是引用字符。所以,像改变psw一样简单,解决了我的问题。
而下面的代码工作得很好:
Properties props = new Properties();
props.put("mail.store.protocol", "imaps");
session = Session.getInstance(props, null);
store = session.getStore();
store.connect("outlook.office365.com", 993, "[email protected]", "psw");
随着 'javax.mail' 版本: '1.5.6'
+0
错误消息有时可能会更有帮助... – Delorean
哎呀,你已经有了域:d –
谢谢回答,但这没有帮助。连接被拒绝,同一个LOGIN失败的异常。还确保我们的Office 365服务器上启用了IMAPS访问协议。 – Delorean