分享

python3发送邮件出现的问题(转)

 hdzgx 2019-12-25

学习Python3.5,根据教程试一试使用Python3.5中的smtplib模块发送电子邮件。出现多个问题:

    本文中使用的发送邮箱:XXXX@163.com    接受邮箱:XXXX@qq.com

1、Error:无法发送邮件.Case:(550, b'User has no permission') 和 Error:无法发送邮件.Case:(535, b'Error: authentication failed')

教程代码:

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.header import Header
  4. sender = 'XXXX@163.com'
  5. pwd = '******'
  6. receivers = ['XXXX@qq.com']
  7. # 三个参数:第一个为文本内容,第二个为plain设置文本格式,第三个为utf-8设置编码
  8. message = MIMEText("Python 发送邮件测试...","plain",'utf-8')
  9. message ['From'] = Header("邮件测试",'utf-8')
  10. message ['To'] = Header("测试",'utf-8')
  11. subject = "Python邮件测试"
  12. message["Subject"] = Header(subject,"utf-8")
  13. try:
  14. # 使用非本地服务器,需要建立ssl连接
  15. smtpObj = smtplib.SMTP_SSL("smtp.163.com",465)
  16. smtpObj.login(sender,pwd)
  17. smtpObj.sendmail(sender,receivers,message.as_string())
  18. print("邮件发送成功")
  19. except smtplib.SMTPException as e:
  20. print("Error:无法发送邮件.Case:%s"%e)

运行结果:Error:无法发送邮件.Case:(550, b'User has no permission')

错误原因:我们使用python发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的,因此登录总是被拒绝。

解决办法:进入163邮箱-设置-客户端授权密码-开启(授权码是用于登录第三方邮件客户端的专用密码),与登录密码不同。开启后在程序中将

pwd = '******'

更改授权密码。如果不及时更改,将会出现出错 Error:无法发送邮件.Case:(535, b'Error: authentication failed')  及时更改授权密码即可。

 

2、Error:无法发送邮件.Case:(554, b'DT:SPM 163 smtp11,D8CowABnhR7VKLZan2wPLg--.27792S2 1521887445,please see http://mail.163.com/help/help_spam_16.htm?ip=220.180.56.61&hostid=smtp11&time=1521887445')

解决办法:这个错误我解决了很久,有网友说是因为邮件主题有“测试”二字被屏蔽了之类的,正确的应该是将

红色方框代码换成:

其中:A和B可以在邮箱中找到,你可以先手动用163邮箱发一封邮件给QQ邮箱查看:

将邮件中的A和B替换到代码中即可。

注意:A、B和"<"之间有一个空格!!!

原文:https://blog.csdn.net/Tongvv/article/details/79680299

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多