java 邮件发送 ssl_Java Mail:在没有SSL的端口25上发送电子邮件...

尽管我试图在不使用SSL的端口25上发送电子邮件,但是却遇到了SSLHandshakeException.在下面,您可以看到javax.mail.Session和SSLHandshakeException打印的调试消息.

您能帮我了解发生了什么吗?

22 Dec 2009 15:13:21,054 INFO root:197 - DEBUG: setDebug: JavaMail version 1.4ea

22 Dec 2009 15:13:21,059 INFO root:197 - DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]

22 Dec 2009 15:13:21,103 INFO root:197 - DEBUG SMTP: useEhlo true, useAuth false

22 Dec 2009 15:13:21,103 INFO root:197 - DEBUG SMTP: trying to connect to host "mail.abcdef.com", port 25, isSSL false

22 Dec 2009 15:13:21,338 INFO root:197 - 220 mail.uvwxyz.com ESMTP abcdef Mail Server v8.0; Tue, 22 Dec 2009 15:12:10 -0700

22 Dec 2009 15:13:21,338 INFO root:197 - DEBUG SMTP: connected to host "mail.abcdef.com", port: 25

22 Dec 2009 15:13:21,342 INFO root:197 - EHLO fsb160

22 Dec 2009 15:13:21,383 INFO root:197 - 250-mail.uvwxyz.com Hello fsb160 [65.124.157.54], pleased to meet you.

250-ENHANCEDSTATUSCODES

250-SIZE

250-EXPN

250-ETRN

250-ATRN

250-DSN

250-CHECKPOINT

250-8BITMIME

250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN

250-AUTH=LOGIN

250-STARTTLS

250 HELP

22 Dec 2009 15:13:21,383 INFO root:197 - DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""

22 Dec 2009 15:13:21,383 INFO root:197 - DEBUG SMTP: Found extension "SIZE", arg ""

22 Dec 2009 15:13:21,384 INFO root:197 - DEBUG SMTP: Found extension "EXPN", arg ""

22 Dec 2009 15:13:21,384 INFO root:197 - DEBUG SMTP: Found extension "ETRN", arg ""

22 Dec 2009 15:13:21,384 INFO root:197 - DEBUG SMTP: Found extension "ATRN", arg ""

22 Dec 2009 15:13:21,384 INFO root:197 - DEBUG SMTP: Found extension "DSN", arg ""

22 Dec 2009 15:13:21,385 INFO root:197 - DEBUG SMTP: Found extension "CHECKPOINT", arg ""

22 Dec 2009 15:13:21,385 INFO root:197 - DEBUG SMTP: Found extension "8BITMIME", arg ""

22 Dec 2009 15:13:21,385 INFO root:197 - DEBUG SMTP: Found extension "AUTH", arg "CRAM-MD5 DIGEST-MD5 LOGIN PLAIN"

22 Dec 2009 15:13:21,385 INFO root:197 - DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""

22 Dec 2009 15:13:21,386 INFO root:197 - DEBUG SMTP: Found extension "STARTTLS", arg ""

22 Dec 2009 15:13:21,386 INFO root:197 - DEBUG SMTP: Found extension "HELP", arg ""

22 Dec 2009 15:13:21,389 INFO root:197 - STARTTLS

22 Dec 2009 15:13:21,430 INFO root:197 - 220 2.0.0 Ready to start TLS

22 Dec 2009 15:13:21,809 INFO root:197 - EHLO fsb160

22 Dec 2009 15:13:21,886 WARN E:314 - Failed to send email

javax.mail.MessagingException: Can't send command to SMTP host;

nested exception is:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

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)

at javax.mail.Service.connect(Service.java:275)

at javax.mail.Service.connect(Service.java:156)

at java.lang.Thread.run(Unknown Source)

Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)

at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)

at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)

at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)

at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)

at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)

at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)

at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)

at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)

at java.io.BufferedOutputStream.flushBuffer(Unknown Source)

at java.io.BufferedOutputStream.flush(Unknown Source)

at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418)

... 7 more

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at sun.security.validator.PKIXValidator.doBuild(Unknown Source)

at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)

at sun.security.validator.Validator.validate(Unknown Source)

at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source)

at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)

at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)

... 19 more

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)

at java.security.cert.CertPathBuilder.build(Unknown Source)

... 25 more

用于创建会话和连接到服务器的代码:

Session session = EmailUtilities.createSession(smtpServer, smtpPort, smtpSSL, smtpAuthentication);

Transport transport = session.getTransport();

transport.connect(smtpServer, smtpUser, smtpPassword);

try {

MimeMessage message = EmailUtilities.createMessage(Main.APPLICATION_NAME + " " + Main.APPLICATION_VERSION, session, to, from, subject, body, attachmentName, attachment, "application/pdf");

transport.sendMessage(message, message.getAllRecipients());

} catch (Exception e) {

throw new Exception(e);

} finally {

transport.close();

}

public static Session createSession(String smtpServer, Integer smtpPort, boolean ssl, boolean authenticate) {

String protocol = "smtp"; //$NON-NLS-1$

if (ssl) {

protocol = "smtps"; //$NON-NLS-1$

}

// -- Attaching to default Session, or we could start a new one --

Properties props = new Properties();

props.put("mail.transport.protocol", protocol);

props.put("mail." + protocol + ".host", smtpServer);

props.put("mail." + protocol + ".port", smtpPort.toString());

props.put("mail." + protocol + ".starttls.enable", Boolean.TRUE.toString());

if (authenticate) {

props.put("mail." + protocol + ".auth", Boolean.TRUE.toString());

}

Session session = Session.getDefaultInstance(props, null);

session.setDebug(true);

return session;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值