boto3由于unicode字符导致InvalidParameterValue错误

问题描述 投票:0回答:2

我正在尝试使用boto3通过SES发送电子邮件。以下是我的代码。

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

import boto3

message = MIMEMultipart()
message['Subject'] = 'i am subject äöü'
message['From'] = 'sender äöü <[email protected]>'
message['To'] = 'receipient äöü <[email protected]>'
html = MIMEText('<strong>Welcome to AWS SES äöü</strong>', 'html')
message.attach(html)

ses.send_raw_email(
    RawMessage={
        'Data': message.as_string()
    }
)

但我在下面得到例外。此错误与FromTo地址中的unicode字符(äöü)有关。如果我删除unicode字符,则成功发送电子邮件。

调用SendRawEmail操作时发生错误(InvalidParameterValue):缺少最终的'@domain'

请帮助解决问题。

email unicode mime boto3 amazon-ses
2个回答
0
投票

按照https://mg.pov.lt/blog/unicode-emails-in-python.html中的建议对电子邮件部分进行编码。这解决了问题,现在我可以发送电子邮件了。


0
投票

根据SES documentation

如果要在“友好名称”中使用Unicode字符,则必须使用MIME编码字语法对“友好名称”进行编码,如使用Amazon SES API发送原始电子邮件中所述。

一种方法:

from email.header import Header

msg['Subject'] = Header('helloé éé', 'utf-8').encode()
# '=?utf-8?b?aGVsbG/DqSDDqcOp?='
© www.soinside.com 2019 - 2024. All rights reserved.