boto3 ses InvalidParameterValue ошибка из-за символов Юникода
Я пытаюсь отправить электронную почту через SES, используя boto3. Ниже мой код.
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
адреса. Если я удаляю символы Юникода, то электронная почта отправляется успешно.
Произошла ошибка (InvalidParameterValue) при вызове операции SendRawEmail: отсутствует окончательный '@domain'
Пожалуйста, помогите решить проблему.
1 ответ
Закодируйте части электронной почты, как указано в https://mg.pov.lt/blog/unicode-emails-in-python.html. Это решило проблему, и теперь я могу отправлять электронные письма.
Согласно документации SES:
Если вы хотите использовать символы Юникода в имени "friendly from", вы должны закодировать имя "friendly from" с использованием синтаксиса MIME-кодированных слов, как описано в разделе "Отправка необработанной электронной почты с помощью Amazon SES API".
Один из способов сделать это:
from email.header import Header
msg['Subject'] = Header('helloé éé', 'utf-8').encode()
# '=?utf-8?b?aGVsbG/DqSDDqcOp?='