电子邮件附件保存
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
应该可以正常工作。
我正在尝试解析带有 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
应该可以正常工作。