-1

私のセットアップでは、fetchmail を使用して Gmail から電子メールを取得します。電子メールは procmail によって処理され、Python スクリプトに渡されます。

を使用するemail.message_from_string()と、結果のオブジェクトが電子メール オブジェクトとして解析されません。 get_payload()メールのヘッダー/本文/ペイロード テキストを単一のテキスト blob として返します。

返されるテキストは次のとおりです。

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 でメールを適切に解釈するには何が欠けていますか?

これらの 質問から、どこかで適切な電子メール ヘッダーを取得していない可能性があることがわかりますが、確認できません。2 行目の ">" はタイプミスではなく、本文にあります。

4

1 に答える 1

1

あなたが言うように「>」が「テキスト内」にあることに関係なく、それが何を意味するにせよ、それは間違っています。この文字を削除した後:

>python test.py <input.txt
example <example@gmail.com>
[<email.message.Message instance at 0x02810288>, <email.message.Message instance at 0x02810058>]

したがって、エラーはメッセージの解析ではなく、「>」文字にあるため、メール テキストが何らかの形で破損しています。

于 2013-08-18T10:15:32.997 に答える