如何向国际地址发送电子邮件

冰冷的心

如何使用smtplibPython将电子邮件发送到国际地址

如果我使用以下代码

    try:
        server = None

        msg = MIMEMultipart('alternative')
        msg['From'] = formataddr((from_email_name, from_email))
        msg['To'] = Header(to_email, 'utf-8')
        msg['Subject'] = Header(subject, 'utf-8')

        plain_text_part = MIMEText(plain_text_body, 'plain', _charset='utf-8')
        msg.attach(plain_text_part)

        html_part = MIMEText(html_body, 'html', _charset='utf-8')
        msg.attach(html_part)

        server = smtplib.SMTP(smtp_server)
        server.starttls()
        server.login(from_email, from_email_password)
        server.sendmail(from_email, to_email, msg.as_string())
    finally:
        if server is not None:
            server.quit()

然后当我使用ñoñó[email protected]电子邮件作为目标地址(to_email)调用此代码时,脚本在以下行失败

server.sendmail(from_email, to_email, msg.as_string())

输出

'ascii'编解码器无法在位置9编码字符u'\ xf1':序数不在范围内(128)

但是,如果我将sendmail函数调用更改为以下内容

server.sendmail(from_email, to_email.encode('utf-8'), msg.as_string())

它失败,并显示以下错误:

{'\ xc3 \ xb1o \ xc3 \ xb1 \ xc3 \ [email protected]':( 555,“ 5.5.2语法错误。i7sm368361lbo.39-gsmtp”)}

我正在使用GMail的SMTP服务器发送这些电子邮件。

我该如何解决?

提前致谢。

Serge Ballesta

RFC 6533-国际化电子邮件概述和框架指出服务器端:

SMTP中继必须

  • 明确识别格式,同意通过ESMTP选项进行识别,或者
  • 拒绝邮件,或在必要时返回未送达通知邮件,以便发件人可以制定另一个计划。

RFC 6531 - SMTP扩展国际化的电子邮件说,随着精度(摘录):

  • 与该扩展名关联的EHLO关键字值为“ SMTPUTF8”
  • 一个可选参数SMTPUTF8被添加到MAIL命令。
  • 如果发送的信封或邮件需要SMTPUTF8扩展功能,则支持SMTPUTF8的SMTP客户端务必通过MAIL命令提供SMTPUTF8参数。

与GMail SMTP服务器进行的交换跟踪证明它已宣布自己为SMTPUTF8兼容服务器,因此您只需要在mail命令中smtplib提供SMTPUTF8选项即可。您只需要将sendmail命令更改为:

server.sendmail(from_email, to_email.encode('utf-8'), msg.as_string(), ['SMTPUTF8'])

由于您已经在主体中处理了最终的非ASCII字符,并使用MIMEMultipart和MIMEText设置了适当的标头,所以都应该没问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何发送电子邮件到国际地址

来自分类Dev

如何通过 smtplib 向多个地址发送电子邮件?

来自分类Dev

如何向注册用户(MVC)发送电子邮件

来自分类Dev

如何通过PHP向Yahoo发送电子邮件

来自分类Dev

如何从ELMAH发送电子邮件?

来自分类Dev

如何从python发送电子邮件

来自分类Dev

通过cakePHP发送电子邮件,如何从变量中设置管理员电子邮件地址?

来自分类Dev

单击提交按钮后如何向用户输入的电子邮件地址发送电子邮件?在 php 中

来自分类Dev

使用代理IP地址从PHPMailer发送电子邮件

来自分类Dev

使用gmail SMTP从辅助地址发送电子邮件

来自分类Dev

SMTP lib从哪个IP地址发送电子邮件?

来自分类Dev

从域名地址发送电子邮件

来自分类Dev

从<>空发件人地址发送电子邮件

来自分类Dev

通过HTML表单发送电子邮件,SQL地址

来自分类Dev

Postfix使用Gmail地址发送电子邮件

来自分类Dev

发送电子邮件时隐藏“发送至电子邮件”地址

来自分类Dev

PHP邮件未发送电子邮件到我的电子邮件地址

来自分类Dev

循环向单个用户发送电子邮件

来自分类Dev

从列表视图向多个用户发送电子邮件

来自分类Dev

以编程方式向当前用户发送电子邮件

来自分类Dev

使用烧瓶向自己发送电子邮件

来自分类Dev

如何发送电子邮件到MD5地址

来自分类Dev

如何使用Jenkins和参数地址发送电子邮件?

来自分类Dev

如何使用Jenkins和参数地址发送电子邮件?

来自分类Dev

如何永久更改默认的发送电子邮件地址?

来自分类Dev

如何发送电子邮件地址和当前网址

来自分类Dev

如何在春季向多个收件人发送电子邮件

来自分类Dev

如何使用Mandrill API向多个收件人发送电子邮件?

来自分类Dev

如何创建使用Backand向管理员发送电子邮件的安全措施?

Related 相关文章

  1. 1

    如何发送电子邮件到国际地址

  2. 2

    如何通过 smtplib 向多个地址发送电子邮件?

  3. 3

    如何向注册用户(MVC)发送电子邮件

  4. 4

    如何通过PHP向Yahoo发送电子邮件

  5. 5

    如何从ELMAH发送电子邮件?

  6. 6

    如何从python发送电子邮件

  7. 7

    通过cakePHP发送电子邮件,如何从变量中设置管理员电子邮件地址?

  8. 8

    单击提交按钮后如何向用户输入的电子邮件地址发送电子邮件?在 php 中

  9. 9

    使用代理IP地址从PHPMailer发送电子邮件

  10. 10

    使用gmail SMTP从辅助地址发送电子邮件

  11. 11

    SMTP lib从哪个IP地址发送电子邮件?

  12. 12

    从域名地址发送电子邮件

  13. 13

    从<>空发件人地址发送电子邮件

  14. 14

    通过HTML表单发送电子邮件,SQL地址

  15. 15

    Postfix使用Gmail地址发送电子邮件

  16. 16

    发送电子邮件时隐藏“发送至电子邮件”地址

  17. 17

    PHP邮件未发送电子邮件到我的电子邮件地址

  18. 18

    循环向单个用户发送电子邮件

  19. 19

    从列表视图向多个用户发送电子邮件

  20. 20

    以编程方式向当前用户发送电子邮件

  21. 21

    使用烧瓶向自己发送电子邮件

  22. 22

    如何发送电子邮件到MD5地址

  23. 23

    如何使用Jenkins和参数地址发送电子邮件?

  24. 24

    如何使用Jenkins和参数地址发送电子邮件?

  25. 25

    如何永久更改默认的发送电子邮件地址?

  26. 26

    如何发送电子邮件地址和当前网址

  27. 27

    如何在春季向多个收件人发送电子邮件

  28. 28

    如何使用Mandrill API向多个收件人发送电子邮件?

  29. 29

    如何创建使用Backand向管理员发送电子邮件的安全措施?

热门标签

归档