通过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())}
答案 0 :(得分:0)
对于像我这样的新手,这很难解决。我最初缺少的主要方面是,发件人姓名必须采用引用的可打印格式才能被识别。
RFC 2047文档和this question帮助我解决了问题。
希望这对以后的人有帮助。
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())}