用于从RFC822兼容文件中读取标头的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()
,但无法弄清楚要传递的内容。是否有一种很好的方法可以删除任何可能存在的bcc标头(1个或更多)?
我找到了办法。诀窍是使用reversed()
向后处理标头数组,以避免内容在数组中“移动”的问题。
# 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])