邮件附件保存

时间:2015-10-28 12:21:09

标签: python python-2.7 email-attachments

我尝试使用附加的pdf文件解析电子邮件

def get_files(poruka):
    pdfs = []
    if poruka.is_multipart():
        for part in poruka.get_payload():
            if part.get_content_type() == 'application/pdf':
                data = part.get_payload()
                temppdf = tempfile.NamedTemporaryFile('w+b', -1)
                temppdf.write(base64.b64decode(data))
                pdfs.append(temppdf)

    return pdfs

它有效,但在pdfs我有文件实例。我尝试做的是将原始名称的文件保存在名为storage的文件夹中。

当我尝试open(temppdf, 'wb').write(temppdf.get_payload(decode=True))时,我收到错误TypeError: coercing to Unicode: need string or buffer, instance found

另外如何获取pdfs [0] filename?

1 个答案:

答案 0 :(得分:0)

第一个问题是您正在尝试打开文件对象而不是文件名。您可以尝试open(temppdf.name),但这可能不起作用(并非所有平台都不保证)。从Python 2.6开始,您可以在NamedTemporaryFile调用上指定delete=False,然后打开temppdf.name应该可以正常工作。