我环顾四周,尚未发现任何东西。我正在查看收件箱中的电子邮件,并检查特定的单词集。它适用于大多数电子邮件,但其中一些无法解析。我使用检查了损坏的电子邮件。
print (msg.Body.encode('utf8'))
和我的问题消息都以 b'开头。 像这样
b'\xe6\xa0\xbc\xe6\xb5\xb4\xe3\xb9\xac\xe6\xa0\xbc\xe6\x85\xa5\xe3\xb9\xa4\xe0\xa8\x8d\xe6\xb4\xbc\xe7\x91\xa5\xe2\x81\xa1\xe7\x91\x
我认为这迫使python将主体读取为字节,但我不确定。无论哪种方式,在b之后,无论我尝试使用哪种编码,我都只会得到垃圾文本。
我之前也尝试过其他编码方法以及解码,但是我得到的只是大量的属性错误。
import win32api
import win32com.client
import datetime
import os
import time
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
dater = datetime.date.today() - datetime.timedelta(days = 1)
dater = str(dater.strftime("%m-%d-%Y"))
print (dater)
#for folders in outlook.folders:
# print(folders)
Receipt = outlook.folders[8]
print(Receipt)
Ritems = Receipt.folders["Inbox"]
Rmessage = Ritems.items
for msg in Rmessage:
if (msg.Class == 46 and msg.CreationTime.strftime("%m-%d-%Y") == dater):
print (msg.CreationTime)
print (msg.Subject)
print (msg.Body.encode('utf8'))
print ('..............................')
最终结果是在控制台中打印出了消息,或者至少给了Python一种读取消息的方法,这样我就可以在正文中找到所需的文本。
答案 0 :(得分:0)
问题中张贴的字节文字是有效的UTF-8。前两个字符是CJK Unified Ideographs块中的U + 683C和U + 6D74 U + 4E00-U + 9FFF。
由于您不知道源编码,因此无法完全确定它,但是电子邮件正文很可能只是用UTF-8(Determine the encoding of text in Python)编码的汉字。如果无法正确看到UTF-8字符,则应检查终端或显示字符集。
也就是说,您应该正确理解字符表示的基础知识。随机编码或解码几乎无法解决任何问题。我建议您先阅读Spolsky's有关Unicode的介绍,然后再转到Python中有关Unicode的Batchelder。
答案 1 :(得分:0)
正如martineau所说,我正在寻找的正确编码是utf16。其他消息是使用utf8编码的。因此,简单地进行邮件刮刮对于编码以及消息类(关闭主题)来说是一个很好的课程。谢谢您的帮助。