【问题标题】:trying to read emails from gmail using pythonista尝试使用 pythonista 阅读来自 gmail 的电子邮件
【发布时间】:2015-01-09 02:26:36
【问题描述】:

我对 Python 还很陌生,很高兴我可以使用 imap4 访问 gmail

这里是我用来访问电子邮件的代码:

from __future__ import print_function
import getpass
import imaplib
import console
import collections
import re
import email
import codecs
import quopri

console.clear()
mail = imaplib.IMAP4_SSL('imap.gmail.com',993)
my password = getpass.getpass("Password: ")
address = 'sch.e@gmail.com'
print('Which email address (TO) would you like to search: ',end='')
EE = raw_input()
SS = r"(TO "+"\""+EE+"\""+r")"
mail.login(address, mypassword)
mail.select("inbox")  #select the box on gmail
print("Checking for e-mails TO ",EE)
typ, messageIDs = mail.search(None,'(SINCE "01-Jan-2014")',SS)
MIDs=messageIDs[0].split()
for mailid in MIDs[::-1]:
    resp, data = mail.fetch(mailid,'(RFC822)')
    raw_body=data[0][1]
    print(raw_body.decode('UTF-8','strict'))
    print(quopri.encodestring(raw_body))
    msg=email.message_from_string(raw_body)
    print(msg)

很遗憾,打印语句中没有一个包含正确的变音符号。

(例如 Beste Grüße)

有人可以给我一个提示如何处理编码吗?除了“=”字符之外,它看起来像 Utf-8 编码文本,

谢谢!! 埃里克

【问题讨论】:

    标签: python email unicode gmail-imap


    【解决方案1】:

    电子邮件的正文已被字符集编码为字节,然后使用 MIME 的quoted-printable 算法将其编码为 7 位 ASCII。您必须反转 QP 编码以获取原始字节,然后您可以使用电子邮件的字符集(不是 utf-8,否则 QP 编码的文本将改为 Beste Gr=C3=BC=C3=9Fe 将它们转换为字符串。字符集是更有可能iso-8859-1)。电子邮件标头将告诉您实际的字符集,以及正文的编码方式(QP、base64 等)。但是,您只获取电子邮件正文,因此您还需要使用RFC822.HEADER 获取电子邮件标题。

    假设电子邮件使用quoted-printable 编码为ISO-8859-1(获取电子邮件标头进行验证)。试试这个更像这样来解码它:

    raw_body=data[0][1]
    raw_body=quopri.decodestring(raw_body)
    raw_body=raw_body.decode('ISO-8859-1')
    

    【讨论】:

    • 谢谢! - 你是对的,标题中提到了编码,它还说“引用可打印”!我使用什么函数来解码并继续处理文本??
    • Python 具有Internet Data Handling 功能,其中包括emailbase64quopri 库。
    • 我在上面的窗口中输入了完整的代码 - 请告诉我如何使这个工作,以便可以正确解码元音变音
    • 您仍然没有获取电子邮件标题,仅获取电子邮件正文。您需要同时获取两者,以便在尝试解码之前检查电子邮件的编码方式。
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 2021-05-26
    • 2014-01-25
    • 2015-09-09
    • 2023-02-04
    • 2020-07-21
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多