簡體   English   中英

使用 python 中的 imaplib 模塊將郵件下載為 pdf

[英]Downloading a mail as pdf using imaplib module in python

mail.login(email_username, email_password)
mail.select('Inbox')
result, data = mail.search(None, '(FROM "abc@gmail.com" SUBJECT "Hello")' )
ids = data[0]

從收件箱中搜索特定郵件后,我想將郵件下載為 pdf。我在其他地方看過,但只能找到使用 get_payload() 方法解析郵件內容。 python有沒有像我們手動點擊gmail的打印按鈕保存郵件的模塊? 謝謝大家。

大多數 email 是 HTML,因此從這個問題中插入任何 HTML-to-PDF 轉換器都有效。

我還為您將imap_tools換成了imaplib ,因為它有一個更簡單的 API:

import pdfkit
from imap_tools import MailBox

with MailBox('imap.gmail.com').login(email_username, email_password, 'INBOX') as mailbox:
    for i, msg in enumerate(mailbox.fetch('ALL', limit=10)):
        html = '<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>' + \
               msg.html
        pdfkit.from_string(html, str(i) + '.pdf')

筆記:

  • pdfkit不處理非 ASCII ,除非你像我一樣添加 utf-8 header
  • 有些消息可能沒有 HTML 內容,請使用msg.html or msg.text來代替
  • 我安裝了 Chocolatey,然后使用 choco 安裝 wkhtmltopdf(pdfkit 依賴項)
  • 我正在使用 GMail,這需要在此處打開不太安全的應用程序 ( SO )

結果(這是從 2012 年開始的):

在此處輸入圖像描述

您可以嘗試使用ReportLab創建一個 pdf 文件,其中包含您從get_payload()方法獲得的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM