python使用smtp发送邮件碰到的小问题

正常情况下,使用smtp发送邮件时创建的smtp对象是包含SSL的,如下:

# 登录并发送 try: # 需要SSL认证 smtpObj = smtplib.SMTP_SSL(self.mail_host) smtpObj.login(self.mail_user, self.mail_pass) smtpObj.sendmail(self.sender, receivers.email.split(','), self.message.as_string()) print('success') smtpObj.quit()except smtplib.SMTPException as e: print('error', e)

但是在特定服务器上,例如客户机上。
上述代码会报出10060的错误,即由于连接方在一段时间后没有正常答复,或者连接主机没有反应,连接尝试失败。
# 登录并发送 try: # 需要SSL认证 smtpObj = smtplib.SMTP(self.mail_host) smtpObj.login(self.mail_user, self.mail_pass) smtpObj.sendmail(self.sender, receivers.email.split(','), self.message.as_string()) print('success') smtpObj.quit()except smtplib.SMTPException as e: print('error', e)

这里要注意,SMTP_SSL和SMTP有区别的,端口不一致,一个是465,一个是25
其次,要注意防火墙,正常情况下,防火墙不允许关闭
这里需要防火墙开放端口
【python使用smtp发送邮件碰到的小问题】

    推荐阅读