2017-08-31 80 views
1

library功能從RFC822兼容的文件正在努力就好了,我讀頭,例如:Python 3.x都有email.message庫:試圖刪除特定頭內容,如BCC

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()爲此,但無法弄清楚通過什麼。 是否有刪除可能存在(1或更多)的任何bcc標題的好方法?

+0

當你說3.X你的意思是遺產'這是默認的向上穿過3.5 email'庫,或新改組一個(這是作爲選件提供,我從3.4相信,但在此之前的推崇3.6)? – tripleee

+0

我在PyCharm下使用'Python 3.6.2 :: Anaconda custom(x86_64)'解釋器來測試它。包的實際文件名似乎在'anaconda3/lib/python3.6/email/utils.py'下,並且該文件的頂部有一個註釋: #Copyright(C)2001-2010 Python Software Foundation #作者:Barry Warsaw #聯繫人:[email protected] 「」「雜項工具。」「」 – steve

回答

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]) 
相關問題