【发布时间】:2020-06-26 03:31:01
【问题描述】:
我做了一个简单的程序,自动为我发送电子邮件。
但是,当我从riseup.net 或 protonmail 发送电子邮件时,有时会因为 gmail 需要“发件人”标头而无法投递。
这就是错误的样子
这是主机 mx1.riseup.net 上的邮件系统。
很抱歉不得不通知您,您的消息无法 交付给一个或多个收件人。附在下面。
如需进一步帮助,请发送邮件至邮局局长。
如果您这样做,请附上此问题报告。你可以删除你的 来自所附返回消息的自己的文本。
The mail system:主机 aspmx.l.google.com[74.125.142.27] 说: 550-5.7.1 [198.252.153.129 11] 我们的系统检测到此消息是 550-5.7.1 不符合 RFC 5322:缺少 550-5.7.1 'From' 标头。 550-5.7.1 为减少发送到 Gmail 的垃圾邮件数量,此邮件已 550-5.7.1 被阻止。请访问 550-5.7.1 https://support.google.com/mail/?p=RfcMessageNonCompliant 550 5.7.1 和 查看 RFC 5322 规范以获取更多信息。 62si8602934pjo.111 - gsmtp(回复 DATA 命令的结尾)
我查找了如何添加来自标头的方法,但由于某种原因我无法使其工作。
这是我的代码
def send_mail():
context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, 587) as server:
server.starttls(context=context)
server.login(susername, spassword)
server.sendmail(semail, recipient, message)
print("Email has been sent!")
编辑:当我从浏览器中发送电子邮件时,Riseup 会自动添加此标头,但当我使用 python 登录到他们的 SMTP 服务器时不会。
【问题讨论】:
-
你能说明你是如何尝试添加标题的吗?
-
@dspencer 我试过这样做 server.sendmail(semail[header], recipient, message) 和 server.sendmail(semail, recipient, message[header]) ,因为我在网上某处看到它。跨度>
-
请在问题中添加您的尝试,最好是来源(您在网上找到它的地方)。这将使我们更容易为您提供帮助。
-
我在@dspencer 上面做的这里是我读过的页面。 stackoverflow.com/questions/31132108/…pymotw.com/2/smtplibdocs.python.org/3/library/email.examples.html
-
您的代码示例不完整:
semail、recipient和message定义在哪里?