2017-08-27 27 views
0

這裏有幾篇文章,但其中沒有一篇適合我。基本上我有以下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登錄我的帳戶。

任何解決問題的指針,將不勝感激!

回答

0

此代碼適用於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 
    } 

} 
+0

哎呀,你已經有了域:d –

+0

謝謝回答,但這沒有幫助。連接被拒絕,同一個LOGIN失敗的異常。還確保我們的Office 365服務器上啓用了IMAPS訪問協議。 – Delorean

0

事實證明,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

相關問題