2013-11-27 46 views
0

我有一封不需要的附件(在這個特殊情況下是一個PKCS-7簽名)的電子郵件。我可以用這段代碼檢測電子郵件中的簽名:使用Pythons的email.message API,你如何刪除郵件的特定部分

payloads = mail.get_payload() 

for index in xrange(len(payloads)): 
    if payloads[index].get_content_type() == "application/pkcs7-signature": 
     print("Found PKCS-7 Signature", index) 

如何從郵件中刪除此特定的有效內容? email.message API似乎只有讀取和寫入整個有效負載的方法:get_payload()和set_payload()。這些都不允許指定讀取或寫入內容的有效負載索引。

+0

我不是100%肯定...如果有效載荷是一個列表...然後刪除/,你會爲另一其他列表...我刪除的項d想象電子郵件是從剩餘的有效載荷構建的......無論如何,值得一試 –

+2

從文檔:'如果有效載荷是一個列表,你改變列表對象,你修改消息的有效載荷。所以基本上列表是一個列表。 – crownedzero

回答

1

一個可能的解決方案:

def remove_signature(mail): 
    payload = mail.get_payload() 
    if isinstance(payload, list): 
     for part in payload: 
      if part.get_content_type().startswith('application/pkcs7-signature'): 
       payload.remove(part) 
    return mail 
相關問題