我正在使用S3 Lambda(python + boto3)+ AWS SES来创建自动回复电子邮件。
从我的电脑发送电子邮件一切正常。我可以在电子邮件中看到正确的字符串。 “Olá,meunomeéPedro”。如果我打印到python中的控制台,仍然在我的电脑中,字符串也可以。
当从lambda触发电子邮件时,我会收到charset enconding / decode问题,例如“Olá,meunomeéPedro”。 如果在lambda s3控制台的python里面,我打印出来的时候看到错误的字符串:“Olá,meunomeéPedro”
我是否需要在电子邮件标题中设置其他属性?
请参阅以下源代码:
# -*- coding: utf-8 -*-
body = u"Olá, meu nome é Pedro"
body = body.encode('UTF-8')
response = client.send_email(
Source='teste@emporiodacerveja.com.br',
Destination={
'ToAddresses': [
"pedrorjbr@gmail.com",
]
},
Message={
'Subject': {
'Data': 'Entre em Contato com Nossa Central de Atendimento',
'Charset': 'UTF-8'
},
'Body': {
'Text': {
'Data': body ,
'Charset': 'UTF-8'
}
}
}
)
答案 0 :(得分:1)
您看到的内容("Olá, meu nome é Pedro"
)称为mojibake。创建它然后将一个编码中的文本解释为另一个(不兼容的)字符编码中的文本:
>>> print(u"Olá, meu nome é Pedro".encode('utf-8').decode('latin-1'))
Olá, meu nome é Pedro
要避免此类错误,请传递Unicode字符串,而不是字节(drop .encode('utf-8')
)。如果.send_email()
在此处不接受Unicode,则可能表示存在错误。