使用email.utils解析和格式化电子邮件地址
email.utils 是Python标准库中的一个模块,用于解析和格式化电子邮件地址。它提供了一些函数来从输入字符串中提取电子邮件地址的各个组成部分,并将它们格式化为常见的电子邮件地址格式。
下面是 email.utils 模块的一些常用函数及其用法:
1. email.utils.parseaddr(address)
这个函数从给定的地址字符串中解析出电子邮件地址和显示名称,并以元组的形式返回。如果地址中包含显示名称,则会解析出显示名称和电子邮件地址;否则,只返回电子邮件地址。下面是一个例子:
import email.utils
address = "John Doe <johndoe@example.com>"
name, email_address = email.utils.parseaddr(address)
print(f"Name: {name}")
print(f"Email: {email_address}")
输出:
Name: John Doe Email: johndoe@example.com
2. email.utils.formataddr(pair, charset='utf-8')
这个函数将一个包含显示名称和电子邮件地址的元组格式化为常见的电子邮件地址格式,并返回格式化后的字符串。可选的 charset 参数指定编码格式,默认为 UTF-8。下面是一个例子:
import email.utils
name = "John Doe"
email_address = "johndoe@example.com"
formatted_address = email.utils.formataddr((name, email_address))
print(f"Formatted Address: {formatted_address}")
输出:
Formatted Address: John Doe <johndoe@example.com>
3. email.utils.getaddresses(addresses)
这个函数从给定的地址列表中解析出所有的电子邮件地址,并以列表的形式返回。地址列表可以包含多个电子邮件地址,每个地址可以带有显示名称。下面是一个例子:
import email.utils
addresses = ["John Doe <johndoe@example.com>",
"Jane Smith <janesmith@example.com>",
"info@example.com"]
parsed_addresses = email.utils.getaddresses(addresses)
for name, email_address in parsed_addresses:
print(f"Name: {name} | Email: {email_address}")
输出:
Name: John Doe | Email: johndoe@example.com Name: Jane Smith | Email: janesmith@example.com Name: | Email: info@example.com
4. email.utils.formatdate(localtime=False, usegmt=False)
这个函数返回当前时间的格式化日期字符串,用于电子邮件中的日期标头。可选的 localtime 参数可指定返回本地时间还是 GMT 时间,默认为 False(即返回 GMT 时间)。下面是一个例子:
import email.utils
date_str = email.utils.formatdate(localtime=True)
print(f"Formatted Date: {date_str}")
输出:
Formatted Date: Mon, 12 Apr 2021 22:00:00 +0800
这些函数提供了在处理电子邮件地址时非常实用的功能。通过解析和格式化电子邮件地址,可以更方便地获取地址的各个组成部分,并将它们转换成适合的格式用于其他操作,如发送电子邮件或存储到数据库中。
除了以上提到的函数,email.utils 还提供了其他一些函数,如解析日期时间字符串的 parsedate()、解析日期时间字符串的 parsedate_to_datetime()、将日期时间转为时间戳的 mktime_tz() 等。这些函数在处理电子邮件相关的日期时间数据时非常有用。
总结来说,email.utils 是一个用于解析和格式化电子邮件地址的实用模块,提供了一系列函数来处理电子邮件地址的各个组成部分,方便地操作和转换电子邮件地址的格式,以及处理相关的日期时间数据。这些函数可以在电子邮件处理和相关应用程序开发中有很大的帮助。
