【问题标题】:Can't parse url from gmail using imaplib无法使用 imaplib 从 gmail 解析 url
【发布时间】:2013-09-30 16:05:05
【问题描述】:

我正在使用 imaplib(python) 登录到 gmail 收件箱并搜索适当的消息。
但是当我打印这些消息时,消息正文中的链接似乎被破坏了。
随机附加“3D”。

【问题讨论】:

标签: python gmail-imap imaplib


【解决方案1】:

'3D' 是 '=' 的十六进制编码。所以问题是你没有正确解码电子邮件,这可以使用python的email模块和message.get_payload(decode=True)来完成。

这是一个简短的 sn-p:

import imaplib, email
imap_server = "imap.aol.com" #maybe this would be imap.gmail.com for gmail?
conn = imaplib.IMAP4_SSL(imap_server, 993)
conn.login(username, password)
conn.select()
resp, data = conn.uid('FETCH', '1:*' , '(RFC822)')
raw = data[0][1].strip()
message = email.message_from_string(raw)

decoded = message.get_payload(decode=True) #this will be the decoded body of the email message

【讨论】:

    【解决方案2】:

    试试Imbox

    因为imaplib 是一个非常低级的库,并且返回的结果很难使用

    安装

    pip install imbox

    用法

    from imbox import Imbox
    
    with Imbox('imap.gmail.com',
            username='username',
            password='password',
            ssl=True,
            ssl_context=None,
            starttls=False) as imbox:
    
        all_inbox_messages = imbox.messages()
        for uid, message in all_inbox_messages:
            message.sent_from
            message.sent_to
            message.subject
            message.headers
            message.message_id
            message.date
            message.body.plain
            message.body.html
            message.attachments
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 2011-07-06
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多