Как кодировать «Имя отправителя» с помощью MIMEText - PullRequest
0 голосов
/ 05 марта 2019

При отправке через Gmail API можно ли включать специальные символы в имя отправителя ?

Например, при попытке отправки с использованием следующего кода имя отправителя не указывается, и в нем отображается только адрес электронной почты.

При включении имени отправителя ascii работает без проблем.

import base64
from email.mime.text import MIMEText

fromName = u'«ταБЬℓσ»' #contains special characters
fromEmail = 'name@domain.com'

message = MIMEText(bodyHtml, 'html', 'utf-8')
message['From'] = u'{} <{}>'.format(fromName, fromEmail).encode('utf-8')
message['to'] = unicode(toEmail)
message['reply-to'] = unicode(replyTo)
message['subject'] = unicode(subject)
message_obj = {'raw': base64.urlsafe_b64encode(message.as_string())}

1 Ответ

0 голосов
/ 06 марта 2019

Для такого новичка, как я, это было трудно решить. Ключевой аспект, который я пропустил изначально, заключается в том, что имя отправителя должно быть в указанном для печати формате , чтобы его можно было распознать.

Документация RFC 2047 и этот вопрос помогли мне разобраться.

Надеюсь, это поможет другим в будущем.

import base64
import quopri
from email.mime.text import MIMEText

message = MIMEText(bodyHtml, 'html', 'utf-8')
message['From'] = "=?utf-8?q?" + quopri.encodestring(str(fromName.encode('utf-8'))) + "?=" + " <{}>".format(fromEmail)
message['to'] = unicode(toEmail)
message['reply-to'] = unicode(replyTo)
message['subject'] = unicode(subject)
message_obj = {'raw': base64.urlsafe_b64encode(message.as_string())}
...