python - 使用 python 电子邮件库解析原始电子邮件添加不需要的字符
问题描述
我正在使用 python 标准电子邮件解析库来解析我从 amazon ses 邮件服务获得的原始电子邮件。
下面是我的代码。
import json
import email
from email.Utils import parseaddr
def parse(raw_email):
message = email.message_from_string(raw_email)
text_plain = None
text_html = None
for part in message.walk():
if part.get_content_type() == 'text/plain' and text_plain is None:
text_plain = part.get_payload()
if part.get_content_type() == 'text/html' and text_html is None:
text_html = part.get_payload()
parsed_email_object = {
'to': parseaddr(message.get('To'))[1],
'from': parseaddr(message.get('From'))[1],
'delivered to': parseaddr(message.get('Delivered-To'))[1],
'subject': message.get('Subject'),
'text_plain': text_plain,
'text_html': text_html,
}
json_string = json.dumps(parsed_email_object)
return json_string
当我解析我的原始电子邮件时,它没有解析 100%,它给了我这样不需要的字符
this is a replyo from the gmail indbo asdf asdf asdfa sdfa=
sd sdfa sdfa fasd
=C2=A0dfa sf asdf
a sdfas
<= div>f asdf=C2=A0
Is there anything else like some decoding option to parse it correctly.
解决方案
将我的评论作为答案,以便引起注意。
part.get_payload(decode=True).decode(part.get_content_charset())
这将解决编码问题
推荐阅读
- html - CSS动画,不适用于禁用的引导按钮
- java - 向具有 dup 键的 json 文件添加新条目
- ios - SecItemCopyMatching 和 Veracode 的错误处理
- sql-server - 如何从其他表中获取内部连接不同值的第一个值
- wpf - WPF TextBlock MultiDataTrigger Grid.Column.Style 不起作用
- c# - 多个订阅者可热观察而不会丢失任何事件
- html - 如何托管多个版本的 SPA
- c# - 按字段值对数组内的 JObject 进行排序
- android - 如何解决android studio中可能的gradle中的未知内部错误,即产生糟糕的新项目并感染以前的工作?
- javascript - 谷歌表格 Javascript 函数循环