最近在做測試demo的時候發現,在本地可以使用qq郵箱的服務來進行郵件的發送,但是把項目部署到云服務器上就沒辦法發送郵件,并且報錯是連接超時:
向xxxxx@qq.com用戶發送綁定郵箱驗證碼異常:Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.qq.com, 25; timeout -1;nested exception is:java.net.ConnectException: 連接超時 (Connection timed out). Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.qq.com, 25; timeout -1;nested exception is:java.net.ConnectException: 連接超時 (Connection timed out)
但是在本地測試一直可以正常使用,查詢資料后得知:如果在yaml配置文件中沒有明確指出使用郵箱服務的端口,那么qq郵箱的默認端口為? 25,但是阿里云服務器這個端口是沒有開放的,查詢資料后可以向阿里申請開放25端口:但是下面這些步驟一看就非常麻煩,所以我們選擇另一個方案
阿里云服務器默認禁用了TCP 25端口的出方向訪問流量,這是出于安全考慮,旨在防止服務器被濫用發送垃圾郵件。盡管如此,如果你有合法的業務需求使用25端口,阿里云提供了官方途徑來申請開放此端口。你可以通過以下步驟嘗試申請開放25端口:1、提交工單申請:登錄阿里云官網,進入控制臺,找到相關的云服務器實例,然后提交一個客戶服務工單。在工單中詳細說明你需要使用25端口的具體原因、用途以及你的服務器實例ID等必要信息。強調你的使用場景是合法且符合規定的服務,比如企業內部郵件服務等。2、提供額外材料:根據阿里云的要求,可能需要你提供額外的證明材料或說明,以證實你的需求合理且不會造成安全風險或違反服務條款。3、等待審核:提交申請后,阿里云的客服或技術團隊會對你的申請進行審核。審核過程可能需要一定時間,具體時長視情況而定。4、結果通知與配置:如果申請被批準,阿里云會告知你,并可能指導你進行必要的配置。之后,你就可以在你的阿里云服務器上使用25端口了。
通過查詢資料發現,QQ郵箱還有一個發送郵件的端口,那就是 465,在yaml配置文件中修改使用qq郵箱服務的端口號:
mail:# 配置 SMTP 服務器地址host: smtp.qq.com# 郵箱的賬號username: 你的qq@qq.com# 郵箱授權碼password: 你的授權碼# 郵件服務協議protocol: smtpproperties:mail:smtp:socketFactory:# 開放指定的端口,465port: 465class: javax.net.ssl.SSLSocketFactoryfallback: falseauth: truestarttls:enable: truerequired: true
然后再在阿里云服務器的安全組開放這個? 465 端口,重新部署后端服務,發現就可以正常使用啦!!!
補充資料:
為了使用QQ郵箱,特別是當你需要通過SMTP發送郵件或使用IMAP/POP3接收郵件時,你需要確保你的云服務器上的相應端口是開放的。以下是QQ郵箱所使用的端口:
-
SMTP(發送郵件):
- SSL加密連接:端口號465
- STARTTLS(先進行明文連接再升級到TLS加密):端口號587
-
IMAP(接收郵件):
- 使用SSL加密:端口號993
-
POP3(接收郵件):
- 使用SSL加密:端口號995
如果你的云服務器上運行著郵件客戶端或者任何需要通過QQ郵箱服務器發送/接收郵件的應用,你需要在服務器的安全組或者防火墻設置中開放上述端口。