正常情况下,使用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
其次,要注意防火墙,正常情况下,防火墙不允许关闭
这里需要防火墙开放端口