如何让 email.utils.formataddr 显示带有 twisted.mail.smtp.sendmail 的发件人姓名?
How can I get email.utils.formataddr to show a sender name with twisted.mail.smtp.sendmail?
当我使用标准 smtplib.SMTP.sendmail 函数时,我可以使用 email.utils.formataddr(senderName, local-part@domain) 作为 from_addr 来调用它,以在电子邮件客户端。
当我使用 twisted.mail.smtp.sendmail 执行相同操作时,我没有显示 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: 在 ('"Sender Name"', [' ', '<','noreply', '@','sender', '.','com', '>'])
"email addresses" 有不止一种标准和语法。 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
.
当我使用标准 smtplib.SMTP.sendmail 函数时,我可以使用 email.utils.formataddr(senderName, local-part@domain) 作为 from_addr 来调用它,以在电子邮件客户端。
当我使用 twisted.mail.smtp.sendmail 执行相同操作时,我没有显示 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: 在 ('"Sender Name"', [' ', '<','noreply', '@','sender', '.','com', '>'])
"email addresses" 有不止一种标准和语法。 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
.