【问题标题】:Add from header in email从电子邮件中的标题添加
【发布时间】: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]) ,因为我在网上某处看到它。跨度>
  • 请在问题中添加您的尝试,最好是来源(您在网上找到它的地方)。这将使我们更容易为您提供帮助。
  • 您的代码示例不完整:semailrecipientmessage 定义在哪里?

标签: python smtp


【解决方案1】:

我也面临同样的问题。我能够通过在消息正文中显式添加 From: 字段来解决它。例如,下面的消息正文将起作用。

message = """From: <your email address>
To: <receiver's email address>\n
Subject: <your subject>\n

Hi, this is a test mail! """

从您评论中的链接中得到这个想法。 Add Subject header to server.sendmail() in Python

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 2014-05-03
    • 2023-03-30
    • 2012-01-14
    • 2016-10-21
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多