【问题标题】:Downloading a mail as pdf using imaplib module in python在 python 中使用 imaplib 模块将邮件下载为 pdf
【发布时间】:2021-02-24 19:48:42
【问题描述】:
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中的打印按钮手动保存邮件一样?谢谢大家。

【问题讨论】:

    标签: python email imaplib


    【解决方案1】:

    您可以尝试使用ReportLab 创建一个包含您从get_payload() 方法获得的内容的pdf 文件

    【讨论】:

      【解决方案2】:

      大多数电子邮件都是 HTML,因此使用来自this question任何 HTML 到 PDF 转换器都可以。

      我还为您将imaplib 换成了imap_tools,因为它的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 unless you add a utf-8 header
      • 有些邮件可能没有 HTML 内容,请使用msg.html or msg.text 来代替它们
      • 我安装了Chocolatey,然后用choco安装了wkhtmltopdf(pdfkit依赖)
      • 我正在使用 GMail,这需要打开不太安全的应用程序here (SO)

      结果(这是 2012 年的):

      【讨论】:

        猜你喜欢
        • 2018-02-12
        • 2016-04-02
        • 2018-07-04
        • 2011-04-01
        • 2017-04-04
        • 2011-11-23
        • 2015-09-24
        • 1970-01-01
        • 2012-11-20
        相关资源
        最近更新 更多