Python3.7 發送郵件 報‘[WinError 10061] 由於目標計算機積極拒絕,無法連接’錯誤的解決方法


背景:

最近在練習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的操作

這里面能使用變量的話當然更好,不使用也沒關系

還有一點就是,端口不是必需的,沒有端口也可以成功發送郵件,已驗證

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM