Python 3.x email.message 库:试图删除特定的 header 内容,例如密件抄送
Python 3.x email.message library: trying to remove specific header content such as bcc
从 RFC822 兼容文件中读取 headers 的 library 函数对我来说工作得很好,例如:
allRecips = []
for hdrName in ['to', 'cc', 'bcc']:
for i in email.utils.getaddresses(msg.get_all(hdrName, [])):
r = {
'address': {
'name': i[0],
'email': i[1]
}
}
allRecips.append(r)
我现在想从上例中的 msg
结构中删除密件抄送收件人。为此,我查看了 del_param()
,但不知道要传递什么。
有没有一种好方法可以删除可能存在的任何密件抄送 headers(1 个或多个)?
我找到了一种方法。诀窍是使用 reversed()
通过 headers 的数组向后工作,以避免数组中内容 'moves' 的问题。
# Remove any bcc headers from the message payload. Work backwards, as deletion changes later indices.
for i in reversed(range(len(msg._headers))):
hdrName = msg._headers[i][0].lower()
if hdrName == 'bcc':
del(msg._headers[i])
列表具有搜索项目的删除方法,因此顺序并不重要。
我相信您可以使用此代码实现目标:
for header in msg._headers:
if header[0].lower() == 'bcc':
msg._headers.remove(header)
从 RFC822 兼容文件中读取 headers 的 library 函数对我来说工作得很好,例如:
allRecips = []
for hdrName in ['to', 'cc', 'bcc']:
for i in email.utils.getaddresses(msg.get_all(hdrName, [])):
r = {
'address': {
'name': i[0],
'email': i[1]
}
}
allRecips.append(r)
我现在想从上例中的 msg
结构中删除密件抄送收件人。为此,我查看了 del_param()
,但不知道要传递什么。
有没有一种好方法可以删除可能存在的任何密件抄送 headers(1 个或多个)?
我找到了一种方法。诀窍是使用 reversed()
通过 headers 的数组向后工作,以避免数组中内容 'moves' 的问题。
# Remove any bcc headers from the message payload. Work backwards, as deletion changes later indices.
for i in reversed(range(len(msg._headers))):
hdrName = msg._headers[i][0].lower()
if hdrName == 'bcc':
del(msg._headers[i])
列表具有搜索项目的删除方法,因此顺序并不重要。
我相信您可以使用此代码实现目标:
for header in msg._headers:
if header[0].lower() == 'bcc':
msg._headers.remove(header)