Python 3.x email.message库:尝试删除特定的标题内容,如密件抄送

问题描述 投票:1回答:1

用于从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个或更多)?

python-3.x email email-headers
1个回答
0
投票

我找到了办法。诀窍是使用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])
© www.soinside.com 2019 - 2024. All rights reserved.