【问题标题】:python email.message_from_string() parse problemspython email.message_from_string() 解析问题
【发布时间】:2013-08-20 03:39:54
【问题描述】:

我的设置使用 fetchmail 从 Gmail 中提取电子邮件,这些电子邮件由 procmail 处理并将其传递给 python 脚本。

当我使用email.message_from_string() 时,生成的对象不会被解析为电子邮件对象。 get_payload() 将电子邮件的标题/正文/有效负载文本作为单个文本块返回。

这是它返回的文本:

From example@gmail.com  Sat Aug 17 19:20:44 2013
>From example  Sat Aug 17 19:20:44 2013
MIME-Version: 1.0
Received: from ie-in-f109.1e100.net [74.125.142.109]
    by VirtualBox with IMAP (fetchmail-6.3.21)
    for <example@localhost> (single-drop); Sat, 17 Aug 2013 19:20:44 -0700 (PDT)
Received: by 10.70.131.110 with HTTP; Sat, 17 Aug 2013 19:20:42 -0700 (PDT)
Date: Sat, 17 Aug 2013 19:20:42 -0700
Delivered-To: example@gmail.com
Message-ID: <CAAsp4m0GBeVg80-ryFgNvNNAj_QPguzbX3DqvMSx-xSGZM18Pw@mail.gmail.com>
Subject: test 19:20
From: example <example@gmail.com>
To: example <example@gmail.com>
Content-Type: multipart/alternative; boundary=001a1133435474449004e42f7861

--001a1133435474449004e42f7861
Content-Type: text/plain; charset=ISO-8859-1

19:20

--001a1133435474449004e42f7861
Content-Type: text/html; charset=ISO-8859-1

<div dir="ltr">19:20</div>

--001a1133435474449004e42f7861--

我的代码:

full_msg = sys.stdin.read()
msg = email.message_from_string(full_msg)
msg['to']          # returns None
msg.get_payload()  # returns the text above

为了让 Python 正确解释电子邮件,我缺少什么?

我从thesequestions 看到我可能没有在某处获得正确的电子邮件标题,但我无法确认。第 2 行的“>”不是错字:它在正文中。

【问题讨论】:

    标签: python parsing email


    【解决方案1】:

    不管 ">" 正如你所说的“在文本中”,不管它是什么意思 - 这是错误的。删除此字符后:

    &gt;python test.py &lt;input.txt
    example &lt;example@gmail.com&gt;
    [&lt;email.message.Message instance at 0x02810288&gt;, &lt;email.message.Message instance at 0x02810058&gt;]

    所以错误不在于解析消息,而在于“>”字符以某种方式破坏了您的电子邮件文本。

    【讨论】:

    • 不知道添加了什么“
    猜你喜欢
    • 2015-10-29
    • 2011-09-05
    • 2011-11-02
    • 1970-01-01
    • 2011-10-17
    • 2019-05-09
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多