我正在尝试找到最清晰的方法来解析电子邮件头。
Python的类https://docs.python.org/3/library/email.message.html允许访问诸如email['To']之类的标头。
这是类型为_UniqueAddressHeader,在https://docs.python.org/3/library/email.headerregistry.html中声明。
email['To']似乎没有公开的方法,并且始终返回复合字符串。
我尝试使用明确创建Address类型的方式:
mailTo = email.headerregistry.Address(mail['To'])
然而,这样做并不能正确地构成对象——所有字符都被吞掉到“display_name”属性中,这不是我们所需要的。
编辑:这是我的自定义函数,可能需要更加健壮以处理诸如不匹配的
<
>
等错误。def addressSplit(e):
"""
:param e: email.header
:return: displayName, localpart, domainpart str
"""
s = str(e)
displayName = ''
openB = s.find('<')
closeB = s.find('>')
if openB>=0 and closeB>=0:
displayName = s[:openB].strip(' ')
s = s[openB+1:closeB].strip(' ') # this is the address part
localpart, domainpart = s.split('@')
return displayName, localpart, domainpart