电子邮件附件保存

Email attachment save

我正在尝试解析带有 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] 文件名?

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