【问题标题】:How can I get email.utils.formataddr to show a sender name with twisted.mail.smtp.sendmail?如何让 email.utils.formataddr 显示带有 twisted.mail.smtp.sendmail 的发件人姓名?
【发布时间】:2020-02-02 05:36:21
【问题描述】:

当我使用标准的 smtplib.SMTP.sendmail 函数时,我可以使用 email.utils.formataddr(senderName, local-part@domain) 作为 from_addr 来调用它,以在电子邮件客户端中显示发件人的姓名。

当我使用twisted.mail.smtp.sendmail 做同样的事情时,我得到的是local-part,而不是senderName。

到目前为止,我只在 Gmail 中对此进行了测试,但由于这是我公司使用的,所以这是我的要求的一部分。

我尝试通过 twisted.mail.smtp.sendmail 发送格式化地址,但出现解析错误。

我使用了 twisted.mail.smtp.quoteaddr,但发现它只是将格式化的名称和地址剥离回地址。不过没有解析错误。

        #print('populate the message')
        msg = MIMEMultipart('alternative')
        msg["Subject"] = 'A Subject'
        msg["From"] = email.utils.formataddr(('Sender Name', 'noreply@example.com'))
        msg["Reply-to"] = 'noreply@example.com'
        msg["To"] = 'recipient@example.com'
        content = MIMEText("Hey, what's up?" ,"html")
        msg.attach(content)
        msg_timeout = round(float(30))

        # create the sender and send it
        result = twisted.mail.smtp.sendmail("mail-sc", msg["From"], msg["To"].split(","), msg,
                     port=25, requireAuthentication=False)

收到此错误失败:twisted.mail._except.AddressError:在'' of ('"Sender Name"', ['', ''])

【问题讨论】:

    标签: python email smtp twisted mime


    【解决方案1】:

    “电子邮件地址”有不止一种标准和语法。 SMTP 使用的地址的标准和语法是(当前)RFC 5321。这是您传递给twisted.mail.smtp.sendmail 的地址类型。 MIME 使用的地址的标准和语法是(当前)RFC 5322。这是您放入 MIME 消息中的发件人、收件人、抄送等地址的类型。

    RFC 5321 地址没有发件人姓名组件。 RFC 5322 地址可以。我希望 email.utils.formataddr 返回一个有效的 RFC 5322 地址,将其放入 msg["From"] 是正确的。但是,您必须将 RFC 5321 地址传递给 twisted.mail.smtp.sendmail。粗略地说,这些格式为noreply@example.com

    【讨论】:

    • 感谢 Jean-Paul 我感谢您的解释。 Twisted 是否会支持 RFC 5322 地址?
    • 为了什么?它只对不是特别接近 Twisted 关注点的 MIME 生成有意义。您可以根据自己的喜好生成 MIME 消息并使用 twisted.mail 发送它们。您只需要在每个地方使用正确的地址即可。
    • 为了更加清楚,twisted.mail MIME 消息 in 的内容并不重要。您可以在消息中包含您喜欢的任何类型的地址。您只需将正确类型的地址传递给sendmail 调用。它不必与消息中的地址相同。它们是独立的、不相关的层,用于不同的、不相关的目的。
    • 现在知道了。谢谢你的耐心。我混淆了 2 层。 Twisted 是一个很棒的工具,我感谢你为它所做的所有工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 2023-02-23
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多