Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用pythonista阅读来自gmail的电子邮件_Python_Email_Unicode_Gmail Imap - Fatal编程技术网

尝试使用pythonista阅读来自gmail的电子邮件

尝试使用pythonista阅读来自gmail的电子邮件,python,email,unicode,gmail-imap,Python,Email,Unicode,Gmail Imap,我是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

我是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)
不幸的是,没有一个print语句包含正确的Umlaute

例如Beste Grüße

有人能给我一个如何处理编码的提示吗?它看起来像Utf-8编码的文本,除了='字符

谢谢!!
Erik

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

假设电子邮件编码为ISO-8859-1,使用引用的可打印获取电子邮件标题进行验证。尝试更像这样的方法来解码:

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

谢谢您是对的,标题中提到了编码,它还表示引用的可打印!!我使用什么函数来解码并继续使用文本??Python具有功能,其中包括电子邮件、base64和quopri库。我在上面的窗口中输入完整的代码-请让我知道如何进行此操作,以便正确解码Umlaute您仍然没有获取电子邮件标题,只有电子邮件正文。您需要同时获取这两个信息,以便在尝试解码之前检查电子邮件的编码方式。