码迷,mamicode.com
首页 > 编程语言 > 详细

python-自动化测试结果发送邮件报错(smtplib.SMTPDataError: (554, b'DT:SPM 163……)解决方法

时间:2020-06-20 16:41:07      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:报错   art   image   自己   邮件内容   测试   repo   五个   report   

先把我的邮件发送脚本粘贴上来吧,再解释下我的报错和解决方法:

  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 = smtp.163.com # 发送邮箱用户/密码(登录邮箱操作) user = "......@163.com" password = .......... # 发送邮箱 sender = ".........@163.com" # 接收邮箱 receivers = [......@qq.com, ".......@163.com"] # 发送主题 subject = 接口测试报告 # # 编写HTML类型的邮件正文(把HTML代码写入) # msg = MIMEText(‘<html><body><a href="">百度一下</a></p></body></html>‘,‘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<.......@163.com>" 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<.......@163.com>" # 发件人
msgRoot["To"] = ‘H<.........@qq,com>‘ # 收件人


第二个的问题解决方案,据说只要在收件人里面加上发件人自己就可以了,还有说主题最好超过五个字符,且不要有星号等特殊符号,更有的人说不要加测试(test)字眼,我觉得多试试,总是有一种可能阻挡住你的。

 

 

最后,希望能解决你的问题,要是有其他情况呢,留言下来我们一起去分析解决吧

python-自动化测试结果发送邮件报错(smtplib.SMTPDataError: (554, b'DT:SPM 163……)解决方法

标签:报错   art   image   自己   邮件内容   测试   repo   五个   report   

原文地址:https://www.cnblogs.com/huahuage/p/13168536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!