使用python电子邮件库解析原始电子邮件,添加不需要的字符

时间:2019-06-03 07:50:09

标签: python email parsing

我正在使用python标准电子邮件解析库来解析从Amazon ses邮件服务中获取的原始电子邮件。

下面是我的代码。

std::string receive_data(const Receiver& receiver) {
    std::string buff;
    int size = receiver.size();
    if (size > 0) {
        buff.assign(receiver.data(), size);
    }
    return buff;
}

当我解析原始电子邮件时,它没有解析100%,而是给了我这样的不需要的字符

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

1 个答案:

答案 0 :(得分:1)

将我的评论作为答案,以便引起注意。

part.get_payload(decode=True).decode(part.get_content_charset())

这将解决编码问题