You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理get_body()中的=2E转义字符?

EML文件中=2E这类转义序列的识别与自动转换方案

问题确认

=2E确实是点号(.),这是quoted-printable编码的转义格式:=后面的两位十六进制数对应字符的ASCII码,2E恰好是点号的ASCII十进制值(46)。

你的EML文件里,纯文本部分明确标注了Content-Transfer-Encoding: quoted-printable,这类转义是正常的编码结果,只是直接调用get_payload()时没有触发自动解码。

解决方案

只需修改代码,让get_payload()自动解码编码内容,再转换为对应字符集的字符串即可:

修改后的代码

import email
import email.policy
import sys

msg = email.message_from_string(sys.stdin.read(), policy=email.policy.default)
plain_body = msg.get_body('plain')
# 先解码quoted-printable编码,再按指定字符集转成字符串
decoded_content = plain_body.get_payload(decode=True).decode(plain_body.get_content_charset())
print(decoded_content)

代码说明

  • get_payload(decode=True):会根据邮件头中的Content-Transfer-Encoding自动解码(这里就是处理quoted-printable编码),返回字节流。
  • .decode(plain_body.get_content_charset()):用邮件中指定的字符集(这里是UTF-8)将字节流转为字符串,避免乱码。

运行结果

执行修改后的代码后,输出会变成:

email app. this is a test .

原始问题相关信息

原始代码

import email
import email.policy
import sys
msg = email.message_from_string(sys.stdin.read(), policy=email.policy.default)
print(msg.get_body('plain').get_payload())

输入的input.eml内容

MIME-Version: 1.0
From: my from
To: email@to.com
Subject: my subject
Content-Type: multipart/mixed;
 boundary="----=_Part_2296279_969698842.1679155313994"
Date: Sat, 18 Mar 2023 16:01:53 +0000 (UTC)

------=_Part_2296279_969698842.1679155313994
Content-Type: multipart/alternative;
 boundary="----=_Part_2296278_601255348.1679155313994"

------=_Part_2296278_601255348.1679155313994
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

email app=2E this is a test =2E
------=_Part_2296278_601255348.1679155313994
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE html>
<html>
<body>
this is html
</body>
</html>
------=_Part_2296278_601255348.1679155313994--

------=_Part_2296279_969698842.1679155313994--

原始运行结果

$ ./main.py < input.eml
email app=2E this is a test =2E

内容的提问来源于stack exchange,提问作者user1424739

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:05:24