Line breaks in IMAP - = - how to decode?(IMAP中的换行符-=-如何解码?)
问题描述
我正在尝试制作一个电子邮件刮取器,它可以抓取某些电子邮件,以查找值以将其存储在CSV文件中。我已经尝试了很多方法来解决这个问题,但到目前为止都没有成功。
现在在我的结果中,我仍然收到这些难看的换行符,它们在我的标记中如下所示:
我也试过剥离Body标签,解码,也尝试了多种解决方案,但到目前为止都不走运。到目前为止,我似乎无法用任何已知的方法删除这些换行符。
我做错了什么?
推荐答案
您正在查看的MIME部分包含Content-Transfer-Encoding: quoted-printable
。正确的解码方法是遍历MIME结构并在执行过程中解释各个部分。但是没有必要显式地这样做;Python的email
库已经为您完成了这项工作。
msg.get_body(preferencelist=('html', 'plain'))
MIME Body Part;的内容,msg.get_body(preferencelist=('html', 'plain'))
会将其提取出来,而get_content()
结果会提取实际的Body部分。
policy=default
关键字参数选择在Python3.6中引入的email.message.EmailMessage
对象类,而不是旧版本中的旧email.message.Message
对象。
更详细地说,尝试将原始电子邮件正文解码为UTF-8是非常错误的。典型的MIME消息有几个部分,每个部分可能具有不同的编码,其中许多部分肯定不使用UTF-8作为其编码(尽管它正变得越来越流行;但通常情况下,实际的UTF-8将位于内容传输编码之后,该编码将保护它在通过可能不是8位干净的路线传输期间免受损害)。
这篇关于IMAP中的换行符-= -如何解码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!