西安哪个公司网站建设好,用阿里云做网站,数据库wordpress,自己搭建网站需要多少钱文章目录 场景描述问题排查根据提示查看原因查看封装的 message 个人简介 场景描述
QQ 邮箱使用 SMTP 发送邮件报错#xff1a;550 The From header is missing or invalid#xff1a;
失败原因#xff1a;(550, bThe From header is missing or invalid. Ple… 文章目录 场景描述问题排查根据提示查看原因查看封装的 message 个人简介 场景描述
QQ 邮箱使用 SMTP 发送邮件报错550 The From header is missing or invalid
失败原因(550, bThe From header is missing or invalid. Please follow RFC5322, RFC2047, RFC822 standard protocol. https://service.mail.qq.com/detail/124/995.)源码pthon 3.12
import smtplib
from email.header import Header
from email.mime.text import MIMETextclass Mail:def __init__(self, mail_pass, sender, receivers):# 第三方 SMTP 服务self.mail_host smtp.qq.com # 填写邮箱服务器:这个是qq邮箱服务器直接使用smtp.qq.comself.mail_pass mail_pass # 填写在qq邮箱设置中获取的授权码self.sender sender # 填写邮箱地址self.receivers receivers # 填写收件人的邮箱QQ邮箱或者其他邮箱可多个中间用,隔开def send(self, subject, content):message MIMEText(content, plain, utf-8) # 邮件内容message[From] Header(self.sender) # 邮件发送者姓名# message[To] Header(self.receivers) # 邮件接收者姓名message[Subject] Header(subject, utf-8) # 发送的主题print(message)try:smtpObj smtplib.SMTP_SSL(self.mail_host, 465) # 建立smtp连接qq邮箱必须用ssl边接因此边接465端口smtpObj.login(self.sender, self.mail_pass) # 登陆smtpObj.sendmail(self.sender, self.receivers, message.as_string()) # 发送smtpObj.quit()print(f发送成功sender{self.sender} receivers:{self.receivers})except smtplib.SMTPException as e:print(f发送失败sender{self.sender} receivers:{self.receivers} 失败原因{e})if __name__ __main__:mail Mail(xxxx, xxxxqq.com, [xxxxgmail.com])mail.send(titel, content)问题排查
根据提示查看原因 看到 QQ 邮箱对 header 中的 from 有合法性校验我们的字段格式符合要求怀疑是字符编码问题。
查看封装的 message
通过打印封装的 message 查看我们的 From 字段乱码去掉 utf-8 编码。
Content-Type: text/plain; charsetutf-8
MIME-Version: 1.0
Content-Transfer-Encoding: base64
From: ?utf-8?q?XXX40qq2Ecom?
Subject: ?utf-8?q?titel?Y29udGVudA再次测试正常发送邮件。
Content-Type: text/plain; charsetutf-8
MIME-Version: 1.0
Content-Transfer-Encoding: base64
From: XXXXXXqq.com
Subject: ?utf-8?q?titel?Y29udGVudA发送成功senderXXXXXqq.com receivers:[XXXXXgmail.com]个人简介 你好我是 Lorin 洛林一位 Java 后端技术开发者座右铭Technology has the power to make the world a better place. 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。 作为一个 Java 后端技术爱好者我不仅热衷于探索语言的新特性和技术的深度还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。 在我的博客上你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法以帮助你更好地掌握Java编程。 我鼓励互动和建立社区因此请留下你的问题、建议或主题请求让我知道你感兴趣的内容。此外我将分享最新的互联网和技术资讯以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进一起探讨技术世界的无限可能性。 保持关注我的博客让我们共同追求技术卓越。