欢迎访问宙启技术站
智能推送

使用Python的email.utils模块来解析电子邮件地址和名称

发布时间:2024-01-06 21:44:34

email.utils模块是Python标准库中的一个模块,提供了用于解析和操作电子邮件地址和名称的函数。

1. 解析电子邮件地址

可以使用email.utils模块的parseaddr()函数来解析电子邮件地址。该函数接受一个包含邮件地址的字符串作为参数,并返回一个元组,元组的第一个元素是地址的名称部分,第二个元素是地址的邮件部分。

示例代码:

from email.utils import parseaddr

email_address = 'John Smith <john@example.com>'
name, address = parseaddr(email_address)
print('Name:', name)
print('Address:', address)

输出结果:

Name: John Smith
Address: john@example.com

2. 解析邮件名称

除了解析邮件地址外,email.utils模块还提供了解析邮件名称的函数。

可以使用email.utils模块的formataddr()函数来解析邮件名称。该函数接受一个元组作为参数,元组的第一个元素是名称部分,第二个元素是邮件部分,返回一个带有名称的电子邮件地址。

示例代码:

from email.utils import formataddr

name = 'John Smith'
address = 'john@example.com'
email_address = formataddr((name, address))
print('Email Address:', email_address)

输出结果:

Email Address: John Smith <john@example.com>

3. 解析多个邮件地址

如果要解析多个邮件地址,可以使用email.utils模块的getaddresses()函数。该函数接受一个包含多个邮件地址的字符串作为参数,并返回一个包含多个邮件地址的列表,每个邮件地址都是一个元组,元组的第一个元素是地址的名称部分,第二个元素是地址的邮件部分。

示例代码:

from email.utils import getaddresses

email_addresses = 'John Smith <john@example.com>,Jane Doe <jane@example.com>'
addresses = getaddresses(email_addresses.split(','))
for name, address in addresses:
    print('Name:', name)
    print('Address:', address)

输出结果:

Name: John Smith
Address: john@example.com
Name: Jane Doe
Address: jane@example.com

总结:

使用Python的email.utils模块可以方便地解析和操作电子邮件地址和名称。通过parseaddr()函数可以解析单个邮件地址,通过formataddr()函数可以构建带有名称的电子邮件地址,通过getaddresses()函数可以解析多个邮件地址。这些函数的使用可以使电子邮件地址的解析和操作变得简单和高效。