在本人工作的過程中磷瘤,遇到了形形色色的問題。當(dāng)時(shí)琢磨了好久才琢磨出這樣的總結(jié)搜变,貼出來供大家參考參考采缚。以下觀點(diǎn)僅代表本人在工作過程中的觀點(diǎn),望大家能夠共同討論挠他,查漏補(bǔ)缺扳抽。
當(dāng)我們使用Java Mail進(jìn)行郵件發(fā)送的時(shí)候,有時(shí)候會(huì)拋出Could not connect to SMTP host: xx@xxx.com, port: 25的異常殖侵。
一般的贸呢,處理該異常的做法都是去檢查我們的配置是否出現(xiàn)了錯(cuò)誤,即去檢查是不是我們配置的郵件服務(wù)器的smtp地址寫錯(cuò)了拢军。
這時(shí)候要注意了楞陷,如果是密碼或者是用戶名錯(cuò)誤,是不會(huì)拋出連接不上smtp地址的異常的茉唉,而是會(huì)報(bào)出javax.mail.AuthenticationFailedException固蛾,如果我們配置了debug,那么就會(huì)發(fā)現(xiàn)郵件服務(wù)器返回的消息是535 Error: authentication failed度陆。
通常的艾凯,smtp地址錯(cuò)誤或者是端口號(hào)配置錯(cuò)誤,那么改回正確的地址以及端口就行了懂傀。這個(gè)沒有什么好說的趾诗。
而現(xiàn)在需要討論的是,如果是在保證全部配置都是正確的情況下鸿竖,那么還出現(xiàn)這種情況沧竟,還拋出異常,那又是怎么回事呢缚忧?
而這也是我所遇到的情況悟泵。找了很多的資料,想過很多種情況闪水,最后將想法定在了是不是smtp的25端口會(huì)對(duì)linux服務(wù)器做出限制糕非。
根據(jù)這樣的想法,我在網(wǎng)上搜索了一下,并沒有找到對(duì)應(yīng)的解決方法朽肥。當(dāng)然禁筏,經(jīng)過多次的尋找,我在百度知道找到了一絲蛛絲馬跡衡招。其中該提問者提到的問題跟我所遇到的問題與我有點(diǎn)關(guān)聯(lián):
該服務(wù)器下所有的鏈接外部25端口的操作都返回超時(shí)異常篱昔。
于是乎,考慮到這樣的情況始腾,我自身去嘗試了telnet一下連接許多主流的郵箱的smtp地址州刽,其中包括:
1、smtp.sina.com.cn 25端口
2浪箭、smtp.163.com 25端口
3穗椅、smtp.exmail.qq.com 25端口
4、smtp.126.com 25端口
5奶栖、smtp.qiye.163.com 25端口
而測(cè)試的結(jié)果與網(wǎng)上說的問題大致一樣匹表。全部smtp地址的25端口都顯示超時(shí)。而我使用公司的另外兩臺(tái)服務(wù)器去訪問宣鄙,同樣是25端口袍镀,都沒有問題,都能連接成功框冀。
接著我立刻打電話給阿里云的客服(公司服務(wù)器用的是阿里云)流椒,問他們是否對(duì)25端口進(jìn)行了限制。那邊的客服的回答是為了避免垃圾郵件的泛濫明也,阿里云將25端口都全部封禁了宣虾。他的回復(fù)當(dāng)時(shí)就讓我釋懷了。
但是因?yàn)槲覀児居辛硗庖粋€(gè)服務(wù)器也是同樣用著25端口温数,卻沒有被封禁绣硝,我又接著問了是怎么回事。而客服說他也不清楚撑刺,只是說有可能是該服務(wù)器的25端口沒有被檢測(cè)到鹉胖,因此沒有被封禁。我也是醉了够傍。
那么現(xiàn)在問題就已經(jīng)釋然了甫菠。
針對(duì)以上的推測(cè)和測(cè)試,那么問題就很有可能是:
<font color=red size=6 face="服務(wù)器的提供商過濾了smtp的端口C嵬汀<庞铡!">服務(wù)器的提供商過濾了smtp的端口0财浮L等鳌瓢棒!</font>
因此,針對(duì)這種情況的發(fā)生丘喻,我將端口換成了465端口脯宿,也就是加入了SSL驗(yàn)證,測(cè)試泉粉,問題迎刃而解连霉!
最后總結(jié):
如果當(dāng)我們是用Java Mail進(jìn)行郵件發(fā)送的時(shí)候,拋出了Could not connect to SMTP host: xx@xxx.com, port: 25的異常搀继。排除配置錯(cuò)誤的可能窘面,
<font color=red size=6 face="那么就很有可能是你的服務(wù)器的運(yùn)營(yíng)商將25端口封禁了翠语!">那么就很有可能是你的服務(wù)器的運(yùn)營(yíng)商將25端口封禁了叽躯!</font>
這時(shí)候就需要你打電話給你的服務(wù)器運(yùn)營(yíng)商客服詢問。
如果是肌括,改成其他可用的smtp端口即可点骑!如阿里云的465端口!