【问题标题】:Use ascii code in from_addr to send email by smtplib使用 from_addr 中的 ascii 代码通过 smtplib 发送电子邮件
【发布时间】:2023-03-29 19:21:01
【问题描述】:

我使用AWS 作为电子邮件服务器通过smtplib 发送电子邮件。不幸的是,当我如下设置from_addr 时,它不起作用!似乎不支持此字符 ý

from_email = "Upmý  <mrab.m.72@gmail.com>"

msg = MIMEMultipart()
msg['Subject'] = email.header.Header(force_text(subject), 'utf-8')
msg['From'] = from_email
msg['To'] = addr
s = smtplib.SMTP(config['host'], config['port'])
s.sendmail(from_email, [msg['To']], msg.as_string())

我遇到了这个错误:

SMTPDataError: (554, b"Transaction failed: User name is missing: '=?utf-8?q?Upm=C3=BD_triko_=)

当我删除 ý 时,它可以工作。任何意见或答案将不胜感激。

【问题讨论】:

    标签: python amazon-web-services amazon-ses smtplib


    【解决方案1】:

    看来,在 python3 中,需要一个 Header 对象来将 From 编码为 utf-8(与您为 Subject 所做的相同):

    msg['From'] = email.header.Header(from_email, 'utf-8')
    

    【讨论】:

    • 谢谢,但是当我更改 msg['From'] 并使用此命令 s.sendmail(msg['From'], [msg['To']], msg.as_string()) 时出现错误:TypeError: object of type 'Header' has no len()
    • 看来我应该为 from_addr 字段传递字符串
    • smtpobj.sendmail(from_email, addr, msg.as_string())
    • @MaryamAbdoli 只需投射 msg 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2018-12-09
    • 2015-09-07
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多