问题描述
import imaplib
import email
from PyPDF2 import PdfFileMerger
import os
HOST = *****
USERNAME = ****
PASSWORD = *****
m = imaplib.IMAP4_SSL(HOST,993)
m.login(USERNAME,PASSWORD)
m.select('INBOX')
result,data = m.uid('search',None,"ALL")
if result == 'OK':
for num in data[0].split():
result,data = m.uid('fetch',num,'(RFC822)')
if result == 'OK':
email_message_raw = email.message_from_bytes(data[0][1])
for part in email_message_raw.walk():
content_type = part.get_content_type()
files = []
if "plain" in content_type:
text = part.get_payload()
f = open('text.html','w')
f.write('<p>'+text+'</p>')
f.close
os.system('wkhtmltopdf text.html text.pdf')
os.system('rm -r text.html')
files.append('text.pdf')
if "pdf" in content_type:
'''
save each pdf
files.append(pdf_filename)
'''
merger = PdfFileMerger()
for pdf in files:
merger.append(pdf)
merger.write(complete_email.pdf)
merger.close
m.close()
m.logout()
我正在尝试保存电子邮件中的 PDF 附件,并将它们与创建的主电子邮件的 PDF 合并。纠结于如何下载 PDF,请参阅“””“””部分。谢谢。
解决方法
files = ['test.pdf'] #exising pdf from plain text
for part in data.walk():
if part.get_content_type() == "application/pdf":
files.append(part.get_filename(failobj=None))
with open(part.get_filename(failobj=None),'wb') as f:
f.write(part.get_payload(decode=True))