Python IMAP:=?utf-8?Q?在主题字符串中
我正在使用 IMAP
显示新电子邮件,一切看起来都很好,除了一个邮件主题显示为:
=?utf-8?Q?Subject?=
我该如何修复它?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我正在使用 IMAP
显示新电子邮件,一切看起来都很好,除了一个邮件主题显示为:
=?utf-8?Q?Subject?=
我该如何修复它?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
在 MIME 术语中,这些编码块称为编码字。您可以像这样解码它们:
查看
email.header
了解更多详细信息。
In MIME terminology, those encoded chunks are called encoded-words. You can decode them like this:
Check out the docs for
email.header
for more details.文本被编码为 MIME 编码字。这是 RFC2047 中定义的一种机制,用于对包含非 ASCII 文本的标头进行编码,以便编码输出仅包含 ASCII 字符。
在Python 3.3+中,自动解析 email.parser 中的类和函数如果其
policy
参数设置为policy.default
,则解码标头中的“编码字”解析类和函数为:
令人困惑的是,至少在 Python 3.10 之前,这些解析函数的默认策略不是
policy.default
,但是policy.compat32
,它不解码“编码的单词”。The text is encoded as a MIME encoded-word. This is a mechanism defined in RFC2047 for encoding headers that contain non-ASCII text such that the encoded output contains only ASCII characters.
In Python 3.3+, the parsing classes and functions in email.parser automatically decode "encoded words" in headers if their
policy
argument is set topolicy.default
The parsing classes and functions are:
Confusingly, up to at least Python 3.10, the default policy for these parsing functions is not
policy.default
, butpolicy.compat32
, which does not decode "encoded words".这是一个 MIME 编码字。您可以使用
email.header
:This is a MIME encoded-word. You can parse it with
email.header
:尝试 Imbox
因为
imaplib
是一个非常低级的库,返回的结果是很难使用安装
pip install imbox
使用
Try Imbox
Because
imaplib
is a very excessive low level library and returns results which are hard to work withInstallation
pip install imbox
Usage
在 Python 3 中,将其解码为近似字符串非常简单:
请参阅
decode_header
和make_header
。In Python 3, decoding this to an approximated string is as easy as:
See the documentation of
decode_header
andmake_header
.高级 IMAP 库可能在这里有用: imap_tools
High level IMAP lib may be useful here: imap_tools