自己尝试用Python的SMTP发邮件时遇到了一些问题,例如执行后报错:
smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp12,EMCowAAneOEunD5d9NOgDA--.24851S2 1564384302,please see http://mail.163.com/help/
源代码为:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
fromaddr = 'lhj12649@163.com' # 邮件发送方邮箱地址
password = 'llllll' # 密码(部分邮箱为授权码)
smtpserver = 'smtp.163.com'
toaddrs = '1374545958@qq.com' # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
message = MIMEText('qinaide','plain') # 邮件内容
message['From'] = Header('liu') # 邮件发送者名字
message['To'] = Header('wdf') # 邮件接收者名字
message['Subject'] = Header('SMTP test') # 邮件主题
mail = smtplib.SMTP()
mail.connect(smtpserver) # 连接 qq 邮箱
mail.login(fromaddr, password) # 账号和授权码
mail.sendmail(fromaddr,toaddrs,message.as_string()) # 发送账号、接收账号和邮件信息
mail.quit()
print("发送成功!")
代码在从qq邮箱发送到qq邮箱时是完全没问题的,就改了一下163邮箱发现报错了;
我查了一下,554 DT:SUM 信封发件人和信头发件人不匹配;
需要写具体收件人和寄件人,需要写全,也就是把邮件地址包含进去。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
fromaddr = 'lhj12649@163.com' # 邮件发送方邮箱地址
password = 'llllll' # 密码(部分邮箱为授权码)
smtpserver = 'smtp.163.com'
toaddrs = '1374575958@qq.com' # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
message = MIMEText('你好','plain') # 邮件内容
#message['From'] = 'lhj'+'<lhj12649@163.com>' # 邮件发送者名字
#message['To'] = 'liu'+'<1375785958@qq.com>' # 邮件接收者名字
message['From'] = Header('liu') # 邮件发送者名字
message['To'] = Header('wdf') # 邮件接收者名字
message['Subject'] = Header('SMTP test') # 邮件主题
mail = smtplib.SMTP()
mail.connect(smtpserver) # 连接 qq 邮箱
mail.login(fromaddr, password) # 账号和授权码
mail.sendmail(fromaddr,toaddrs,message.as_string()) # 发送账号、接收账号和邮件信息
mail.quit()
print("发送成功!")
这么改完就可以发送成功了