我想通過使用java發送smtp郵件。我的郵箱編碼:通過Java和Postfix服務器發送SMTP郵件
Properties properties = System.getProperties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable","true");
properties.put("mail.smtp.host", "example.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.user", "[email protected]");
properties.put("mail.smtp.password", "123456");
Authenticator auth = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("[email protected]","123456");
}
};
Session mailSession = Session.getInstance(properties, auth);
mailSession.setDebug(true);
Transport transport = mailSession.getTransport("smtp");
example.com是我的postfix服務器主機名。
我已經創建了這個鏈接我的服務器exacly同樣的步驟: http://cnedelcu.blogspot.com.tr/2014/01/how-to-set-up-simple-mail-server-debian-linux.html
和我得到Java錯誤:
DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "example.com", port 587, isSSL false
220 example.com ESMTP Postfix (Debian/GNU)
DEBUG SMTP: connected to host "example.com", port: 587
EHLO VGate
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "10240000"
DEBUG SMTP: Found extension "VRFY", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
STARTTLS
220 2.0.0 Ready to start TLS
EHLO VGate
14:41:49,841 ERROR SystemUsers:253 - Unknown System ErrSor at REST Service
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)
而且,這裏是我的郵件日誌:
Mar 2 14:43:12 VGate postfix/smtpd[28565]: connect from localhost[127.0.0.1]
Mar 2 14:43:12 VGate postfix/smtpd[28565]: SSL_accept error from localhost[127.0.0.1]: 0
Mar 2 14:43:12 VGate postfix/smtpd[28565]: warning: TLS library problem: error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown:s3_pkt.c:1294:SSL alert number 46:
Mar 2 14:43:12 VGate postfix/smtpd[28565]: lost connection after STARTTLS from localhost[127.0.0.1]
Mar 2 14:43:12 VGate postfix/smtpd[28565]: disconnect from localhost[127.0.0.1]
我該怎麼做才能克服那些錯誤。
感謝您的幫助。
是否有您使用SSL理由嗎?您遇到的錯誤意味着他無法在創建到SMTP的SSL連接時在密鑰庫/信任庫中找到一個特殊證書。 –