阿里雲/騰訊雲默認禁止使用25端口發送郵件解決方法

  出於安全考慮,阿里雲騰訊雲等服務器默認封禁TCP25端口出方向的訪問流量,所以用戶無法在阿里雲或騰訊雲上的雲服務器通過TCP25端口連接外部地址。用戶無法通過TCP25端口連接第三方郵件服務商的SMTP服務器對外部發送郵件。這種情況下我們通常可以使用一下兩種方案來解決。

一、申請解封25端口

阿里雲以及騰訊雲解封教程可參考以下鏈接

阿里雲阿里雲服務器25端口解封教程

騰訊雲:騰訊雲解封25端口教程

(經實測騰訊雲解封很方便,阿里雲可能會申請不通過)

騰訊雲

阿里雲 

二、改用465端口

在使用465端口的SSL安全鏈接方案後,千萬不要使用【網易品牌】的免費郵箱(如:163,126,yeah.net等。不過聽說網易收費郵箱能正常收發郵件),否則你發送的郵件會當作是垃圾郵件禁止發送。

網易郵件發送問題鏈接企業退信的常見問題?-163郵箱常見問題

我們這裏使用的是新浪郵箱進行465端口測試。使用之前需要在郵箱設置中開發客戶端授權碼

示例代碼:

我這裏使用的hutool郵件工具類進行郵件發送。官網鏈接:Hutool參考文檔

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.0.M4</version>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

mail.setting (465端口)

# 郵件服務器的SMTP地址,可選,默認爲smtp.<發件人郵箱後綴>
host = smtp.sina.com
# 郵件服務器的SMTP端口,默認是25端口
port = 465
# 發件人(必須正確,否則發送失敗)
from = [email protected]
# 用戶名,必須要設置成你自己使用郵箱的名稱,否則會報錯,權限認證失敗  535錯誤
user = [email protected]
# 密碼 此處注意,這裏是授權碼
pass = xxxxxx(對應的郵箱客戶端授權碼)
# 使用SSL安全連接
sslEnable = true
# 指定實現javax.net.SocketFactory接口的類的名稱,這個類將被用於創建SMTP的套接字
socketFactoryClass = javax.net.ssl.SSLSocketFactory
# 如果設置爲true,未能創建一個套接字使用指定的套接字工廠類將導致使用java.net.Socket創建的套接字類, 默認值爲true
socketFactoryFallback = false
# 指定的端口連接到在使用指定的套接字工廠。如果沒有設置,將使用默認端口456
socketFactoryPort = 465
auth = true

mail.setting(25端口)

host = smtp.yeah.net
# 郵件服務器的SMTP端口,可選,默認25
port = 25
# 發件人(必須正確,否則發送失敗)
from = [email protected]
# 用戶名,默認爲發件人郵箱前綴
user = XXXXXX
# 密碼(注意,某些郵箱需要爲SMTP服務單獨設置授權碼,詳情查看相關幫助)
pass = XXXXX

使用hutool工具類發送郵件非常簡單,調用如下api

 MailUtil.send("郵件地址", "郵件主題", "郵件內容", 是否是html);

測試

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章