使用Pythons email.message API,如何删除邮件的特定部分

时间:2013-11-27 16:11:10

标签: python email python-2.7

我收到了带有不需要的附件的电子邮件(在这种特殊情况下是PKCS-7签名)。我可以用这段代码检测电子邮件中的签名:

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()。这些都不允许指定读取或写入内容的有效负载索引。

1 个答案:

答案 0 :(得分: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