阿里雲部署Django項目郵件配置出錯

最近用阿里雲部署了一個django項目,裏面用到了django郵件功能,發現郵件不能發送出去,但是數據庫裏面有記錄,查了一下,發現是阿里雲禁用了25端口,導致用25端口配置的郵箱不能用,一般的郵件發送使用 smtp協議發送是基於25端口,但是很多雲服務器平臺默認將 25 端口封鎖了,導致在本地開發調試都是可以的,但是到部署到線上後,就會提示錯誤。

傳統配置:

EMAIL_HOST = "smtp.163.com"   #這裏使用的是163郵箱
 
EMAIL_PORT = 25
 
EMAIL_HOST_USER = "郵箱用戶名"
 
EMAIL_HOST_PASSWORD = "授權碼"
 
EMAIL_FROM = '任意名字<郵箱用戶名>'

但是上述配置現在只對本機運行有用,阿里雲屏蔽了25端口,郵件發送會失敗,這個時候解決方案就有幾種

第一種就是申請25端口解封,鼠標移上右上角個人中心處,選擇“安全管控”
在這裏插入圖片描述
然後點擊“25端口解封申請”,出來的申請信息以一一填寫好就行
在這裏插入圖片描述
不過這種申請難度比較大,除非是比較大的,商業化的服務器,一般輕量級的,個人用的都很難通過審覈,它會建議你用465加密端口
在這裏插入圖片描述

所以第二種方法就是修改端口號,用465或者其他端口,我們以163郵箱爲例

EMAIL_HOST = "smtp.163.com"
 
EMAIL_PORT = 465
 
EMAIL_HOST_USER = "郵箱用戶名"
 
EMAIL_HOST_PASSWORD = "授權碼"
 
EMAIL_USE_SSL = True   # 打開ssl協議

EMAIL_USE_TLS = False  # 一般都爲False
 
EMAIL_FROM = '任意名字<郵箱用戶名>'

這樣就基本配置好可以使用了。注意,有時QQ郵箱465端口不行,那我們可以設置爲587端口,與此同時,這裏的EMAIL_USE_TLS一定要改爲True,官方文檔中有說到,而且EMAIL_USE_SSL和EMAIL_USE_TLS兩個不能同時爲True,如果出現了服務器就會報502錯誤!

EMAIL_USE_TLS
默認值:False

與SMTP服務器通訊時是否使用TLS(安全)連接。 這用於顯式TLS連接,通常在端口587上。如果遇到掛起的連接,請參閱隱式TLS設置EMAIL_USE_SSL。

EMAIL_USE_SSL
默認值:False

與SMTP服務器通信時是否使用隱式TLS(安全)連接。 在大多數電子郵件文檔中,這種TLS連接類型稱爲SSL。 通常在端口465上使用。如果遇到問題,請參閱顯式TLS設置EMAIL_USE_TLS。

請注意,EMAIL_USE_TLS / EMAIL_USE_SSL是互斥的,因此僅將其中一項設置設爲True。

p.s.下面列出來了國內大型的郵件服務商的一些基本信息
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

另外阿里雲官方也有類似的幫助文檔(非django):使用SSL加密465端口發信樣例及Demo

基本上照着這裏的做,都能解決不能發送郵件這個問題。

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