我正在尝试使用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 äöü <from@email.com>'
message['To'] = 'receipient äöü <to@email.com>'
html = MIMEText('<strong>Welcome to AWS SES äöü</strong>', 'html')
message.attach(html)
ses.send_raw_email(
RawMessage={
'Data': message.as_string()
}
)
但是我在下面得到了例外。此错误与From
和To
地址中的unicode字符(äöü)有关。如果删除unicode字符,则会成功发送电子邮件。
调用时发生错误(InvalidParameterValue) SendRawEmail操作:缺少最终的'@domain'
请帮助解决问题。
答案 0 :(得分:0)
按照https://mg.pov.lt/blog/unicode-emails-in-python.html中的建议对电子邮件部分进行编码。这解决了问题,现在我可以发送电子邮件了。
答案 1 :(得分:0)
如果要在“友好来源”名称中使用Unicode字符,则必须使用MIME编码词语法对“友好来源”名称进行编码,如使用Amazon SES API发送原始电子邮件中所述。
一种方法:
from email.header import Header
msg['Subject'] = Header('helloé éé', 'utf-8').encode()
# '=?utf-8?b?aGVsbG/DqSDDqcOp?='