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的操作
这里面能使用变量的话当然更好,不使用也没关系
还有一点就是,端口不是必需的,没有端口也可以成功发送邮件,已验证