java發送郵件方法,老是報錯,報錯信息以下:javax.mail.AuthenticationFailedExceptionjava
鏈接不上smtp服務器,緣由是stmp服務器沒有受權,好比說你用qq發郵件:927xxxxx@qq.com 你就必須對當前郵箱進行受權,受權步驟百度很簡單,須要發送一個短信就開了受權。服務器
Transport transport = mailSession.getTransport("smtp"); transport.connect(smtpHost, "xxxxx@163.com", "密碼");//密碼是受權碼 transport.sendMessage(testMessage, testMessage.getAllRecipients()); transport.close();
這樣以後就不會報這個錯了:javax.mail.AuthenticationFailedException。
我在繼續進行測試的時候,發現報另一個錯誤session
javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28 at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:823) at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:756) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:673) at javax.mail.Service.connect(Service.java:295) at javax.mail.Service.connect(Service.java:176) at com.ab.itws.common.SendHtmlMail.sendMessage(SendHtmlMail.java:43) at com.ab.itws.common.SendHtmlMail.main(SendHtmlMail.java:61)
發現原來是端口的問題測試
// SMTP 服務器的端口 (非 SSL 鏈接的端口通常默認爲 25, 能夠不添加, 若是開啓了 SSL 鏈接, // /* 須要改成對應郵箱的 SMTP 服務器的端口, 具體可查看對應郵箱服務的幫助, // QQ郵箱的SMTP(SLL)端口爲465或587, */
System.out.println("Configuring mail session for: " + smtpHost);
java.util.Properties props = new java.util.Properties();
props.setProperty("mail.smtp.auth", "true");// 指定是否須要SMTP驗證
props.setProperty("mail.smtp.host", smtpHost);// 指定SMTP服務器
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", "587");//SMTP的端口號
Session mailSession = Session.getDefaultInstance(props);
mailSession.setDebug(true);// 是否在控制檯顯示debug信息
端口改好以後,終於解決了問題。
郵件成功發出ui