python3使用smtplib和MIME发送邮件失败
代码:
from smtplib import SMTP
from email.mime.text import MIMEText
from email.header import Header
def send_email(SMTP_host, from_addr, password, to_addrs, subject, content):
email_client = SMTP(SMTP_host)
email_client.login(from_addr, password)
# create msg
msg = MIMEText(content,'plain','utf-8')
msg['Subject'] = Header(subject, 'utf-8')#subject
msg['From'] = 'main<xxxxx@163.com>'
msg['To'] = "xxxxx@126.com"
email_client.sendmail(from_addr, to_addrs, msg.as_string())
email_client.quit()
if __name__ == "__main__":
send_email("smtp.163.com","xxxxx@163.com","password","xxxxx@126.com","test","hellow")
运行错误:
Traceback (most recent call last):
...
File "D:/bioinformatics/python脚本/mai.py", line 14, in send_email
email_client.sendmail(from_addr, to_addrs, msg.as_string())
File "D:\软件\python\lib\smtplib.py", line 799, in sendmail
raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp8,DMCowACX58anaFJX9+uwAA--.20172S2 1465018537,please see http://mail.163.com/help/help_spam_16.htm?ip=219.143.13.117&hostid=smtp8&time=1465018537')
在网上找了很多方法,把防火墙也关了,修改了发件人收件人名称,但还是没有效果,真的不知道是什么原因。。
Enfin, j'ai trouvé une solution :
Une erreur se produira lorsque le sujet de l'e-mail est « test », remplacez-le simplement par un autre mot. . Je ne sais pas quelle est la raison étrange
Le rapport d'erreur n'est-il pas très clair :
Lien de l'erreur : http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html
Ce dont vous avez besoin, c'est de vérifier le contenu de ce que vous avez publié.
1) Vérifiez la corbeille pour vous assurer que l'e-mail n'est pas jeté à la poubelle
2) De et À doivent être cohérents avec le contenu. Ne remplissez pas de champs incohérents, sinon il sera filtré par le. serveur de messagerie.
Si vous testez le code ci-dessous, vous pouvez utiliser la boîte aux lettres 163 pour envoyer des e-mails à la boîte aux lettres QQ.
C'est effectivement le cas. L'expéditeur et le destinataire doivent être 163 serveurs pour réussir l'envoi. Sinon, une erreur sera signalée !