python email特殊字符

时间:2010-10-05 07:50:30

标签: python special-characters

如何在电子邮件的'from'电子邮件字符串中发送注册符号等特殊字符?例如。 Test® <test@hello.com>。我是否需要设置一些标题?

2 个答案:

答案 0 :(得分:0)

email.header用于处理标头中使用的unicodes。

答案 1 :(得分:0)

在Python 3.6或更高版本中,您可以使用新的EmailMessage / Policy API做到这一点。

>>> from email.message import EmailMessage
>>> from email.headerregistry import Address

>>> em = EmailMessage()
>>> from_ = Address(display_name="Test®", username="test", domain="hello.com")
>>> em['from'] = from_
>>> em['to'] = Address('JohnD', 'John.Doe', 'example.com')
>>> em.set_content('Hello world')
>>> print(em)
to: JohnD <John.Doe@example.com>
from: Test® <test@hello.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0

Hello world

在电子邮件实例上调用str时,如果显示标头值时未应用任何内容传输编码,但是会应用CTE,可以通过调用EmailMessage.as_string来看到:

>>> print(em.as_string())
to: JohnD <John.Doe@example.com>
from: =?utf-8?q?Test=C2=AE?= <test@hello.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0

Hello world