JavaMail 發(fā)送郵件失敗
問(wèn)題描述
用java 實(shí)現(xiàn)一個(gè) 發(fā)送郵件的Demo(用的是QQ郵箱) 但發(fā)送總是失敗,QQ郵箱中的 Smtp 服務(wù)也都開(kāi)啟了,密碼用的是獲取的授權(quán)碼
public static void main(String[] args) { // 收件人電子郵箱 String to = '123@qq.com'; // 發(fā)件人電子郵箱 String from = '456@qq.com'; // 指定發(fā)送郵件的主機(jī)為 smtp.qq.com String host = 'smtp.qq.com'; //QQ 郵件服務(wù)器 // 獲取系統(tǒng)屬性 Properties properties = System.getProperties(); // 設(shè)置郵件服務(wù)器 properties.setProperty('mail.smtp.host', host); properties.put('mail.smtp.auth', 'true'); properties.put('mail.smtp.port', '465'); properties.put('mail.smtp.socketFactory.port', '465'); properties.put('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory'); properties.put('mail.smtp.starttls.enable', 'true'); properties.put('mail.smtp.socketFactory.fallback', 'false'); properties.put('mail.smtp.starttls.enable', 'true'); properties.put('mail.smtp.ssl.trust', 'smtp.qq.com'); // 獲取默認(rèn)session對(duì)象 Session session = Session.getDefaultInstance(properties,new Authenticator(){ public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication('456@qq.com', '123123'); //發(fā)件人郵件用戶名、密碼 } }); session.setDebug(true); try{ // 創(chuàng)建默認(rèn)的 MimeMessage 對(duì)象 MimeMessage message = new MimeMessage(session); // Set From: 頭部頭字段 message.setFrom(new InternetAddress(from)); // Set To: 頭部頭字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 頭部頭字段 message.setSubject('This is the Subject Line!'); // 設(shè)置消息體 message.setText('This is actual message'); // 發(fā)送消息 Transport.send(message); System.out.println('Sent message successfully....from w3cschool.cc'); }catch (MessagingException mex) { mex.printStackTrace(); } }
錯(cuò)誤提示DEBUG SMTP: trying to connect to host 'smtp.qq.com', port 465, isSSL falsejavax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465; 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 targetat com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)at javax.mail.Service.connect(Service.java:317)at javax.mail.Service.connect(Service.java:176)at javax.mail.Service.connect(Service.java:125)at javax.mail.Transport.send0(Transport.java:194)at javax.mail.Transport.send(Transport.java:124)at com.syx.email.MailTest3.main(MailTest3.java:68)
有沒(méi)有做過(guò)類(lèi)似的大神指點(diǎn)一下 …^.^…
問(wèn)題解答
回答1:SSL數(shù)字證書(shū)問(wèn)題,簡(jiǎn)單點(diǎn)去掉數(shù)字證書(shū)驗(yàn)證試試 properties.put('mail.smtp.ssl.trust', 'smtp.qq.com'); // 這行先注釋調(diào)
相關(guān)文章:
1. 數(shù)組按鍵值封裝!2. docker不顯示端口映射呢?3. java - 阿里的開(kāi)發(fā)手冊(cè)中為什么禁用map來(lái)作為查詢的接受類(lèi)?4. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題5. python - flask _sqlalchemy 能否用中文作為索引條件6. python3.x - git bash如何運(yùn)行.bat文件?7. 跟蹤器怎么開(kāi)啟無(wú)反應(yīng)8. 主題切換問(wèn)題,用過(guò)別人的webapp在后臺(tái)切換模板主題后手機(jī)端打開(kāi)網(wǎng)頁(yè)就是切換到的主題了9. clone - git sourceTree克隆倉(cāng)庫(kù)時(shí),都不停彈出Password Required彈窗,即時(shí)輸入正確的git賬號(hào)密碼還是彈出10. html5 - 使用echarts中的圖表 一個(gè)頁(yè)面導(dǎo)入了好幾個(gè)js圖表 實(shí)現(xiàn)echarts圖表隨著瀏覽器窗口變化而變化時(shí)出現(xiàn)了問(wèn)題
