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

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

      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)字眼,我觉得多试试,总是有一种可能阻挡住你的。

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

  • 相关阅读:
    drf-通过drf-extensions扩展来实现缓存
    social_django第三方登录 没有token解决方法
    python-项目日志配置使用
    drf-支付宝支付
    git 相关命令
    django第三方登录与邮箱验证流程
    django项目部署
    数组中的方法
    滚动到页面底部,更新数据
    图片卷边
  • 原文地址:https://www.cnblogs.com/huahuage/p/13168536.html
Copyright © 2011-2022 走看看