先把我的邮件发送脚本粘贴上来吧,再解释下我的报错和解决方法:
import smtplib,email,os,time,yagmail
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
#测试报告存储的路径
report_dir = ‘..........\\report\\‘
#将测试报告文件夹下的所有文件名作为列表返回
lists =os.listdir(report_dir)#对所有测试报告按照生成时间进行排序
lists.sort(key=lambda filename: os.path.getmtime(report_dir +filename))#获取最新的测试报告
recent = lists[-1]#指定最新的测试报告路径
file =os.path.join(report_dir, recent)#邮件正文
#content = "接口测试报告"
## 将测试报告作为附件发送
#yag.send(".....com","测试报告",content,file)
#发送邮箱服务器
smtpserver = ‘‘
#发送邮箱用户/密码(登录邮箱操作)
user = "......@"password= ‘..........‘
#发送邮箱
sender = ".........@"
#接收邮箱
receivers = [‘......@‘, ".......@"]#发送主题
subject = ‘接口测试报告‘
## 编写HTML类型的邮件正文(把HTML代码写入)
#msg = MIMEText(‘
百度一下‘,‘html‘,‘utf-8‘)
#msg[‘Subject‘] = Header(subject,"utf-8")
#发送附件
sendfile = open(file, "r", encoding=‘utf-8‘).read()
att= MIMEText(sendfile, "base64", "utf-8")
att["Content-Type"] = "application/octet-stream"att["Content-Disposition"] = "attachment;filename = result.html"msgRoot= MIMEMultipart(‘related‘)
msgRoot[‘Subject‘] =subject
msgRoot.attach(att)
msgRoot["From"] = "L<.......>"msgRoot["To"] = ‘%s‘ %receivers#连接发送邮件(smtplib模块基本使用格式)
smtp =smtplib.SMTP()
smtp.connect(smtpserver,25)#smtp.set_debuglevel(1)
smtp.login(user, password)#smtp.sendmail(sender,receiver,msg.as_string())
smtp.sendmail(sender, receivers, msgRoot.as_string())
smtp.quit()
这个是已经可以正常执行的代码了,中途出现535、554的错误 ,记录下我解决报错的结果方法和尝试
1.首先报错535:这个比较简单就解决的了,去我的163邮箱里面打开授权,设置如下:
原因:
未将POP3/SMTP服务开启。通过在163邮箱内 设置 获取授权码 打开,通过授权码可以进行第三方登录。
然后开启SMTP服务,并且记录下授权的密码
记住,要记录下这个开启时给的授权密码。然后赋值到脚本里面的password,这个密码不是邮箱登录密码,是这个授权密码哦。
则需要这样就基本处理掉了535报错
2.再次运行出现554报错,解决方案有好几种:
原因:
* 发件人和收件人参数没有进行定义
*发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;信封发件人和信头发件人不匹配
第一个的问题解决方案,顾名思义,进行参数定义,就像我脚本代码里面的一样:
msgRoot["From"] = "L<.......>" # 发件人msgRoot["To"] = ‘H<.........>‘ # 收件人
第二个的问题解决方案,据说只要在收件人里面加上发件人自己就可以了,还有说主题最好超过五个字符,且不要有星号等特殊符号,更有的人说不要加测试(test)字眼,我觉得多试试,总是有一种可能阻挡住你的。
最后,希望能解决你的问题,要是有其他情况呢,留言下来我们一起去分析解决吧
python自动发邮件报554错误_python-自动化测试结果发送邮件报错(smtplib.SMTPDataError: (554 bDT:SPM 163……)解决方法...