我正在使用JavaMail連接到POP3服務器。如何正確設置JavaMail超時設置
而且,我設置以下屬性,這樣的JavaMail不會等待很長時間,如果郵件服務器不響應:
props.setProperty("mail.pop3.connectionpooltimeout", "3000");
props.setProperty("mail.pop3.connectiontimeout", "3000");
props.setProperty("mail.pop3.timeout", "3000");
然而,在某些情況下超時工作正常,但有時凍結的JavaMail (!)與以下調試消息:
DEBUG POP3: connecting to host "pop3.yahoo.com", port 110, isSSL false
更改端口或協議(SSL,TLS ..)不起作用。我假設主機根本不存在。
例如,如果我查詢pop3.yahoo.com代替pop.mail.yahoo.com(這將是正確的主機名),我不得不等待很長時間直到發生超時異常。 幾分鐘後,我得到以下異常,應用程序繼續運行:
java.net.ConnectException: Operation timed out
pop3.yahoo.com似乎存在,但不會迴應:
localhost:~ me$ ping pop3.yahoo.com
PING pop3.yahoo.com (206.190.46.10): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
你可能會問爲什麼我使用pop3.yahoo.com而不是pop.mail.yahoo.com。 那麼,我只是想測試如果我的應用程序的用戶插入了錯誤的主機名會發生什麼。
我認爲這個問題與此報告http://www.opensubscriber.com/message/[email protected]/180946.html有關,其中發佈者聲稱如果電子郵件服務器關閉連接就會出現問題。 JavaMail似乎等待很長時間(不知道爲什麼)。
由於問題未在我發佈的鏈接中解決:有人知道如何修復或至少調試嗎?
任何幫助將真的很感激!
如果雅虎真的無聲無息地丟棄所有數據包,爲什麼Javamail不遵守我在Property對象中提供的超時設置?這真的很奇怪。 – Timo 2011-01-08 10:29:48