我的一位客戶正在使用Gmail作爲商業應用(Google Apps的一部分),我不得不重新配置我開發的網站,以便與新憑證相匹配。由於TLS錯誤導致了一些困難,我設法讓代碼在本地主機和我的測試服務器上工作(都是Apache Tomcat 5.5)。一切都很順利,直到我不得不在他的服務器上移動它(託管公司告訴我的另一個Tomcat 5.5)。在客戶端的服務器,我得到以下錯誤:通過gmail的SMTP服務器與Java發送問題
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
java.io.IOException: Couldn't connect using "javax.net.ssl.SSLSocketFactory" socket factory to host, port: smtp.gmail.com, 465; Exception: java.lang.reflect.InvocationTargetException
奇怪的是,本地主機和測試服務器上的端口465正常工作,並表示,從託管的傢伙端口被打開自己的服務器上。
連接到郵件服務器的代碼是:
用下面的.properties文件
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.auth=true
mail.smtp.starttls.required=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
mail.smtp.port=465
mail.transport.protocol=smtps
[email protected]
mail.userpassword=password
[email protected]
[email protected]
我嘗試使用Gmail,587其他端口,但它不工作的任何服務器。即使25號港口也不會做到這一點。
那麼,我做錯了什麼,我該如何做郵件工作?
你能在日誌中找到關於InvocationTargetException的更多信息嗎?希望有一個堆棧跟蹤? –
在麻煩的服務器上使用了什麼JVM? –