java郵件

[i]JavaMail的屬性以及mail.jar的Bug
Java, JavaMail, SMTP
必須瞭解的基本概念與核心類:Session是郵件操作的接口;Transport是收發郵件所使用的協議,一般Session會有多個Transport;Message是收發操作的單位;Store是消息的集合,類似郵件客戶端。每個Store包含一系列的Folder和Message,每個Folder又包含一系列的Folder和Message。[/i]

Session需要使用javax.mail.util.Properties來構造,常用的用來構造Session的屬性:


屬性名
含義

javax.mail.smtp.user
SMTP的缺省用戶名。

javax.mailsmtp.host
要連接的SMTP服務器。

javax.mailsmtp.port
要連接的SMTP服務器的端口號,如果connect沒有指明端口號就使用它,缺省值25。

javax.mailsmtp.connectiontimeout
Socket連接超時值,單位毫秒,缺省值不超時。

javax.mailsmtp.timeout
Socket I/O超時值,單位毫秒,缺省值不超時。

javax.mailsmtp.from
SMTP使用的Email地址,用來設置郵件的return地址。缺省是Message.getFrom()或InternetAddress.getLocalAddress()。注意:javax.mailsmtp.user優先使用

javax.mailsmtp.localhost
localhost名,缺省是InetAddress.getLocalHost().getHostName()。如果JDK和name service正確配置,一般不需設置。

javax.mailsmtp.ehlo
如果爲false,那麼不會嘗試使用EHLO命令登錄,缺省是true。通常EHLO命令失敗,會倒退到HELO命令。這個屬性只有在服務器沒有fail EHLO屬性或沒有實現EHLO屬性。

javax.mailsmtp.auth
缺省是false,如果爲true,嘗試使用AUTH命令認證用戶。

javax.mailhost
郵件交互的主機。

javax.mailtransport.protocol
要裝入session的協議(smtp、pop3、imap、nntp)。

javax.mailuser
登錄郵件服務器的用戶名(發送郵件時需要)。

javax.mailfrom
發件人地址(發送郵件時需要)。



mail.jar在1.3.1中存在一個嚴重的Bug:

當調用transport.connect();連接郵件SMTP服務器的時候,如果SMTP服務器沒有響應,此API會一直等待不斷開連接,即便你設置了javax.mail.smtp.connectiontimeout屬性也不管用。這樣發送郵件的線程就會一直是RUNABLE狀態,但是卻無所作爲。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章