当前位置:   article > 正文

smtplib.SMTPDataError: (550, b‘The “From“ header is missing or invalid. Please follow RFC5322, RFC20_smtplib.smtpdataerror: (550, b'the "from" header i

smtplib.smtpdataerror: (550, b'the "from" header is missing or invalid. plea
  1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.header import Header
  4. from email.utils import formataddr
  5. def send_email():
  6. # 设置要登录的邮箱
  7. smtp_obj = smtplib.SMTP('smtp.qq.com')
  8. # 登录邮箱
  9. smtp_obj.login('1120619200@qq.com','bizzgnpiwvhvggfe')
  10. # 编辑内容
  11. mail_text = 'This is Email~ 您要的邮件来啦~~'
  12. # plain 原生文本模式
  13. msg_body = MIMEText(mail_text,'plain','utf-8')
  14. # 设置从哪发送的
  15. msg_body['From'] = formataddr((str(Header('百战python学院', 'utf-8')), '1120619200@qq.com'))
  16. msg_body['Subject'] = Header('测试Python自动邮件','utf-8')
  17. # 发送邮件
  18. smtp_obj.sendmail('1120619200@qq.com','18574651783@163.com',msg_body.as_string())
  19. if __name__ =='__main__':
  20. send_email()

当你设置邮件头部时,应确保它符合邮件格式标准。使用 Email.header.Header 对象时的编码问题可能导致邮件服务提供商(QQ邮箱)无法识别它们。如果只是简单地使用文本和邮件地址,通常是没问题的。
msg_body['From'] = Header('python <1120619200@qq.com>') 这种格式符合标准格式,因为它将名字和邮箱地址以常见的格式组合起来,不包括非ASCII字符,所以没有涉及到编码转换。
但是当你尝试将非ASCII字符(如中文)加入邮件头部时,就需要小心处理编码。
你使用了 Header('百战python学院 <1120619200@qq.com>', 'utf-8'),尽管你指定了UTF-8编码,但是可能在电子邮件客户端或者Python的 smtplib 和 email 模块在处理这种复杂的编码时存在兼容性问题。
当你遇到这样的问题时,可以使用以下方式来正确设置含有非ASCII字符头部:
from email.utils import formataddr
msg_body['From'] = formataddr(('百战python学院', '1120619200@qq.com'))

这样 formataddr 可以负责处理字符的编码,让头部信息能够符合邮件服务商的要求。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/432553
推荐阅读
  

闽ICP备14008679号