背景:
最近在練習Python 的郵件發送功能
照着教程寫了一個簡單的demo
結果運行時報如下錯誤:[WinError 10061] 由於目標計算機積極拒絕,無法連接。
如圖:
解決路徑如下:
Step1. 連不上,是不是因為沒加端口呀,加上端口試一試
將連接語句改成:smtp.connect('smtp.163.com',25)
Ctrl+B
呼呼 還報錯 如下:
Step2. 加了端口還不行,又查了下,原來25端口被封,已更換為465端口,
遂將代碼做如下修改:smtp.connect('smtp.163.com',25)
滿心期待能夠發送成功,結果現實又啪啪打臉,新的錯誤出現,如下圖:
各種百度ing
Step3. 網上搜到下面一段話:
“上面說的是最普通的情況,但是不能忽略的是現在好多企業郵件是支持安全郵件的,就是通過SSL發送的郵件,這個怎么發呢?SMTP對SSL安全郵件的支持有兩種方案,一種老的是專門開啟一個465端口來接收ssl郵件,另一種更新的做法是在標准的25端口的smtp上增加一個starttls的命令來支持。”
個人沒看太懂,附上文章鏈接:https://blog.csdn.net/diyiday/article/details/81504647
將代碼修改如下:
smtp = smtplib.SMTP_SSL('smtp.163.com',465)
將smtp.connect的代碼注釋掉
Ctrl+B
Bingo! 郵件發送成功!
看到了最希望看到的畫面:
注:使用SMTP_SSL連接大概是Python3.7的改進,沒找到具體的資料,不敢下定論
如果您的Python3.7也遇到了跟我一樣的問題
可以直接嘗試Step3的操作
這里面能使用變量的話當然更好,不使用也沒關系
還有一點就是,端口不是必需的,沒有端口也可以成功發送郵件,已驗證