我正嘗試使用javamail連接到交換郵件服務器(不知道哪個版本)。
我有可以模擬所有其他用戶的帳戶的用戶名和密碼。
我試圖打開其中一個用戶的存儲。 (密碼不詳)使用javamail登錄的域名/用戶/帳戶不能與交換服務器上的imap一起使用
我的確發現了這個問題How to use Javamail for accessing additional mailboxes (IMAP, Exchange 2010)。它使用[domain]/[user]/[sharedaccount]作爲登錄。
如果我只使用[域名]/[用戶],但使用第二個帳戶[域名]/[用戶]/[模擬帳戶]後面的第二個帳戶名稱,則連接將失效。
如果我在Thunderbird中使用相同的憑據,它會建立連接。
實施例:
域:ABC
已知的用戶名與密碼:admin
郵箱連接到:[email protected](原木與wverleur)
工作:
ABC /管理員
不工作:
ABC /管理/ wverleur
credentials
包含以下內容:
使用rootUrl:mailserver.abc.com
用戶名:admin
密碼:密碼
域:ABC
模擬:wverleur
getImapUsername()返回域/用戶名/模擬
我的連接代碼:
private void login() throws MessagingException {
// connection properties
Properties properties = new Properties();
// TLS & SSL
properties.setProperty("mail.imaps.starttls.enable", "true");
properties.setProperty("mail.imaps.ssl.enable", "true");
properties.setProperty("mail.imaps.ssl.trust", credentials.getRootUrl()); // self signed certificate
// login settings
properties.setProperty("mail.imaps.auth.ntlm.disable", "true");
properties.setProperty("mail.imaps.auth.plain.disable", "true");
properties.setProperty("mail.imaps.auth.gssapi.disable", "true");
// retrieve a session
session = Session.getInstance(properties);
// retrieve and open a store
store = session.getStore("imap");
try {
store.connect(credentials.getRootUrl(), credentials.getImapUsername(), credentials.getPassword());
} catch (MessagingException messagingException) {
throw new MessagingException("Error in storeConnect: " + store.toString(),
messagingException);
}
}
JAVAMAIL德布ug顯示以下內容:
DEBUG IMAP: protocolConnect login, host=[rooturl], user=[domain]\[user]\[impersonate], password=<non-null>
我錯過了什麼嗎?
它甚至可能嗎?
有你嘗試使用socat/telnet /其他網絡工具進行登錄過程,並通過IMAP登錄過程?這是解決連接和身份驗證問題的好方法。 – Max
我沒有。但問題已解決。服務器在使用模擬時需要安全連接,但不需要常規登錄(不知道爲什麼)。我會刪除這個問題,因爲我認爲這對任何人都不是很有用。這是一個非常具體的問題。 –
請不要刪除該問題。如何模擬用戶與Exchange現在的問題,然後來了,它是很好的有一個展示它是如何工作的例子。提供自己的答案,展示如何使其工作。 –