開發日誌之我所遇到的javax.mail.NoSuchProviderException: No provider for SMTP問題

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

用Javamail發郵件時,發現出現[javax.mail.NoSuchProviderException: No provider for SMTP]的問題,
網上搜了一把,大多爲mail.jar,activation.jar等Jar文件沒有置於Classpath下的原因,但是我這裏是
千真萬確把它放在Classpath下的,那麼到底什麼原因呢?調試了大半天不得其解。浪費了很多時間,最後
只能從mail.jar本身着手了,用Winrar等打開mail.jar文件,在其META-INF目錄夾下有
[javamail.default.providers]文件,用notepad等打開後發現有如下內容:
# JavaMail SMTP provider Sun Microsystems, Inc
protocol=smtp; type=transport; class=com.sun.mail.smtp.SMTPTransport; vendor=Sun Microsystems, Inc;
protocol=smtps; type=transport; class=com.sun.mail.smtp.SMTPSSLTransport; vendor=Sun Microsystems, Inc;
注意[protocol=smtp]中的smtp是小寫的,而錯誤提示中的SMTP是大寫的,會不會是大小寫的問題呢?抱着這樣的疑問,
我把代碼中的setProtocol(“SMTP”)改成setProtocol(“smtp”),編譯運行,果然不再報錯了。這裏竟然有大小寫的
區別,我倒是沒想到。當然把mail.jar中的protocol=smtp改成protocol=SMTP,或者在protocol=smtp的下面再追加一
條protocol=SMTP的設定應該也是可以的(沒有嘗試)。很簡單的問題卻花了很多時間,很不值得,特此撰文,權當備忘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章