python-2.7 - 如何修复 imaplib 返回难以理解的文本(可能是 base64)?
问题描述
我正在努力提取电子邮件正文,以便稍后在我的程序中使用,我将在其中提取特定的文本片段。到目前为止,该代码适用于从 gmail 帐户发送到另一个 gmail 帐户的电子邮件,但在尝试阅读从 Outlook 收件箱发送的电子邮件时会返回一堆奇怪的文本。
我已经尝试从 base64 解码它,但它似乎没有帮助。
import imaplib
import email
username = "XXXX"
password = "YYYY"
imap = imaplib.IMAP4_SSL("imap.gmail.com", 993)
imap.login(username, password)
imap.select('INBOX')
status, response = imap.search(None, 'UNSEEN')
unreadmsgs = response[0].split()
result, data = imap.fetch(unreadmsgs[0], "(UID BODY[TEXT])")
raw_mail = email.message_from_string(data[0][1])
raw2= raw_mail.get_payload(decode=True)
print(raw2)
当我寻找可读文本时,这会返回类似下面的内容。
--_000_VI1PR07MB3966DEECC2518D0D5C2C2EF6C4850VI1PR07MB3966eurp_
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
DQoNCkZyb206IFBlYWNlVGVjaCBBY2NlbGVyYXRvciA8ZGltaXRyYS5oYXR6dWRpc0BjNWNhcGl0YWwuY29tPg0KU2VudDogTW9uZGF5LCBKYW51YXJ5IDcsIDIwMTkgMTE6NDMgUE0NClRvOiBEaW1pdHJhIEhhdHp1ZGlzIDxEaW1pdHJhLkhhdHp1ZGlzQGM1Y2FwaXRhbC5jb20+OyBIYWRlZWwgQWwtVGFzaGkgPGhhZGVlbC5hbHRhc2hpQGM1Y2FwaXRhbC5jb20+DQpTdWJqZWN0OiBOaW5qYSBGb3JtcyBTdWJtaXNzaW9uDQoNCkNvbXBhbnkgLyBTdGFydHVwIE5hbWU6DQoNClNlbnNlIEFmcmljYQ0KDQpHaXZlIHVzIGEgc2hvcnQgZGVzY3JpcHRpb24gb2YgeW91ciBpbXBhY3QgdmVudHVyZS46DQoNCldlIGhhdmUgYSBnbG9iYWwgdmlzaW9uIG9mIHByb21vdGluZyBjaXRpemVuIHBhcnRpY2lwYXRpb24gaW4gcHVibGljIGRpc2NvdXJzZS4NClNpbmNlIG91ciBsYXVuY2ggaW4gMjAxNy8yMDE4IGluIENhbWVyb29uLCBvdXIgY29tbWl0bWVudCB0byB0aGF0IHZpc2lvbiB3YXMgaW1wbGVtZW50ZWQgYnkgbWFraW5nIGxvY2FsIG5ld3MgYW5kIG90aGVyIG5vbi1maWN0aW9uIG1lZGlhIG1vcmUgYWNjZXNzaWJsZS4gV2UgYXJlIG5vdyB0aGUg......
等等
解决方案
这是 base64 编码的(请参阅数据上方的内容传输编码)
decodedBytes = base64.b64decode(encodedStr)
decodedStr = str(decodedBytes, "utf-8")
print(decodedStr)
推荐阅读
- api - 团队成员打开的 Github 搜索 PR
- python - 与 Selenium 斗争 - 输入用户名和密码
- java - Java - Cron 作业 - 如果一个实例触发批处理作业,则阻止其他实例执行相同操作
- node.js - 用 npm 脚本替换 gulp 任务
- java - 来自 PreLoader 的多线程 - JavaFX
- javascript - KeyboardEvent.shiftKey v/s KeyboardEvent.Key === 'Shift' ,当 e.Key === 'Shift' 时 e.shiftKey 可以同时为 False
- javascript - javascript没有括号符号切片吗?即字符串[0:4]
- php - 在 Laravel 中插入或更新相关模型(多对多关系)
- excel - 使用 ImportExcel Powershell 模块在特定工作表上检索 Excel 表中的列列表
- ruby-on-rails - 如何通过rails中的活动记录从2个表中获取数据