我有一个带有jre6的tomcat web应用程序。它以https模式运行。 它发送邮件警报。该应用程序将自生成证书作为使用Keytool - JRE 6生成的信任库文件。
最近使用jre7升级了应用程序。我将应用程序更改为https模式,该模式使用Keytool -JRE7生成信任库文件。在这里,我无法发送邮件。抛出错误。两个应用程序代码之间没有变化。只是jre是差异。
javax.mail.MessagingException:无法向SMTP主机发送命令; 嵌套异常是: 的 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径 | at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)| at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408)| at com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847)| at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384)| 在javax.mail.Service.connect(Service.java:297)| 在javax.mail.Service.connect(Service.java:156)| 在javax.mail.Service.connect(Service.java:105)| 在com.server.util.MailServerHandler.checkMailServer(MailServerHandler.java:145)|
Java Mail Debug就在这里。 它停在EHLO命令。
DEBUG: !anyLoaded|
DEBUG: not loading resource: /META-INF/javamail.providers|
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers|
DEBUG: Tables of loaded providers|
DEBUG: not loading resource: /META-INF/javamail.address.map|
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]|
DEBUG SMTP: useEhlo true, useAuth true|
DEBUG SMTP: useEhlo true, useAuth true|
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false|
250-smtp.gmail.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"|
DEBUG SMTP: Found extension "8BITMIME", arg ""|
DEBUG SMTP: Found extension "STARTTLS", arg ""|
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""|
DEBUG SMTP: Found extension "PIPELINING", arg ""|
DEBUG SMTP: Found extension "CHUNKING", arg ""|
DEBUG SMTP: Found extension "SMTPUTF8", arg ""|
STARTTLS
220 2.0.0 Ready to start TLS
EHLO rajesh-2668
这是我设置的smtp属性。
mail.smtp.starttls.enable=true
mail.debug=true
mail.smtp.port=587
mail.smtp.auth=true
mail.smtp.host=smtp.gmail.com
mail.smtp.starttls.required=true
mail.smtp.timeout=10000
mail.smtp.connectiontimeout=10000
我无法弄清楚出了什么问题?我是否需要任何代码级别更改或任何conf更改?因为我被困了一个星期,所以请在这里扔一些灯。非常感谢帮助。