Java實現(xiàn)發(fā)送郵件功能時碰到的坑
之前用163郵箱發(fā)郵件時明明是成功的,但是使用中國移動自己的郵箱時,無論如何在linux服務(wù)器中都發(fā)送不成功,一開始報如下錯誤:
javax.mail.MessagingException: Unknown SMTP host: mail.chinamobilesz.com at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1959) ~ [mail-1.4.7.jar:1.4.7] at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:65 4) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Service.connect(Service.java:317) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Service.connect(Service.java:176) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Service.connect(Service.java:125) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Transport.send0(Transport.java:194) ~[mail-1.4.7.jar:1.4.7 ] at javax.mail.Transport.send(Transport.java:124) ~[mail-1.4.7.jar:1.4.7] at com.cmsz.processOm.service.impl.EmailSendServiceImpl.sendEmail(EmailS endServiceImpl.java:107) ~[EmailSendServiceImpl.class:na] at com.cmsz.processOm.controller.WorkOrderController$SendEmail.isSendEma il(WorkOrderController.java:555) [WorkOrderController$SendEmail.class:na] at com.cmsz.processOm.controller.WorkOrderController$SendEmail.run(WorkO rderController.java:524) [WorkOrderController$SendEmail.class:na] at java.lang.Thread.run(Thread.java:745) [na:1.7.0.11] ......
在linux中telnet mail.chinamobilesz.com 25也不通,但是直接把mail.chinamobilesz.com換成ip就可以了,在網(wǎng)上查找資料并參考其他文章后,設(shè)置了主機名和ip的映射后終于telnet成功連接:
但是盡管telnet成功連接了,啟動項目后發(fā)送郵件依然報錯,只不過換了一個錯誤而已:
javax.mail.MessagingException: Could not connect to SMTP host: mail.chinamobilesz.com, port: 25 at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961) ~[mail-1.4.7.jar:1.4.7] at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Service.connect(Service.java:317) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Service.connect(Service.java:176) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Service.connect(Service.java:125) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Transport.send0(Transport.java:194) ~[mail-1.4.7.jar:1.4.7] at javax.mail.Transport.send(Transport.java:124) ~[mail-1.4.7.jar:1.4.7] at com.cmsz.processOm.service.impl.EmailSendServiceImpl.sendEmail(EmailSendServiceImpl.java:107) ~[EmailSendServiceImpl.class:na] at com.cmsz.processOm.controller.WorkOrderController$SendEmail.isSendEmail(WorkOrderController.java:555) [WorkOrderController$SendEmail.class:na] at com.cmsz.processOm.controller.WorkOrderController$SendEmail.run(WorkOrderController.java:524) [WorkOrderController$SendEmail.class:na] at java.lang.Thread.run(Thread.java:745) [na:1.7.0.11] ......
查找很多資料還是沒能解決問題,不明白明明可以telnet的,為什么到了程序中就連接不上。如此折騰了好久,最終由組長出馬解決了問題,我也才終于知道了原因。竟然是項目中如下代碼導(dǎo)致:
// SSL加密
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
// 設(shè)置信任所有的主機
sf.setTrustAllHosts(true);
proerties.put("mail.smtp.ssl.enable", "true");
proerties.put("mail.smtp.ssl.socketFactory", sf);
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
使用了這一段代碼后,連接的是465端口,不是25,但是實際上移動提供給我的郵箱沒有開465這個端口,因此便造成不論是465還是25端口都連接不上,于是去掉這段代碼后,啟動項目再次發(fā)送郵件便成功了。
以上所述是小編給大家介紹的Java實現(xiàn)發(fā)送郵件功能時碰到的坑的全部敘述,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
雪花算法(snowflak)生成有序不重復(fù)ID的Java實現(xiàn)代碼
雪花算法是一種分布式系統(tǒng)中生成唯一ID的方法,由41位時間戳、10位機器碼和12位序列號組成,具有唯一性、有序性和高效率等優(yōu)點,這篇文章主要介紹了雪花算法(snowflak)生成有序不重復(fù)ID的Java實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-11-11
解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機的情況
這篇文章主要介紹了解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機的情況,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java常用數(shù)字工具類 數(shù)字轉(zhuǎn)漢字(1)
這篇文章主要為大家詳細介紹了Java常用數(shù)字工具類,數(shù)字轉(zhuǎn)漢字,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Java中ArrayList和LinkedList有什么區(qū)別舉例詳解
這篇文章主要介紹了Java中ArrayList和LinkedList區(qū)別的相關(guān)資料,包括數(shù)據(jù)結(jié)構(gòu)特性、核心操作性能、內(nèi)存與GC影響、擴容機制、線程安全與并發(fā)方案,以及工程實踐場景,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-02-02
SpringSecurity構(gòu)建基于JWT的登錄認(rèn)證實現(xiàn)
這篇文章主要介紹了SpringSecurity構(gòu)建基于JWT的登錄認(rèn)證實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

