python 网易stmp发送邮件及问题列举
构造发送邮件
def format_email(subject, content):
msg = MIMEText(("机器 %s :。" % machine_name) + content)
msg['Subject'] = Header(subject, 'utf-8')
# 554 from和to不能相同 subject要修改
msg['From'] = ACC
# 这里的recv是 a@qq.com,b@qq.com这样的
msg['To'] = recv
return msg
建立连接并发送
def send_email(subject, content):
msg = format_email(subject, content)
smtp = smtplib.SMTP()
for i in range(3):
try:
smtp.connect(HOST)
smtp.login(ACC, PASSWD)
break
except:
print_time("第三方邮箱连接失败,稍后重试。")
time.sleep(5)
for i in range(3):
try:
recv_lst = msg['To'].split(",")
# 这里recv_lst 是["a@qq.com", "b@qq.com]这样的
smtp.sendmail(ACC, recv_lst, msg.as_string())
print_time("邮件发送成功")
break
except:
print_time("发送邮件失败,稍后重试。")
print_time(msg)
traceback.print_exc()
time.sleep(5)
smtp.quit()
问题
错误码554
一个可能的原因是subject不对,尽量使用中文构造subject!!
而且这个会根据不同的ip来对相同的subject作出不同处理,在自己家网络可以发送,但是在别的地方却直接554。