Прочтите все сообщения электронной почты из текстового файла, содержащего несколько сообщений электронной почты, используя python - PullRequest
0 голосов
/ 04 августа 2020

У меня есть один файл txt, содержащий несколько сообщений электронной почты. Приложенный образец текстового файла, который содержит несколько электронных писем (формат .eml)

From details
Return-Path: <emailaddress>
Delivered-To: email@address.com
Received: details
Received-SPF: details
Authentication-Results: details
Received: details
ARC-Seal: details
ARC-Message-Signature: details
Received: details
From: details
To: details
Subject: details
Thread-Topic: details
Thread-Index: details
Date: details
Message-ID:details
Accept-Language: en-US
Content-Language: en-US
Content-Type: multipart/mixed;
boundary="_004_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_"
MIME-Version: 1.0
details
--_004_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_
Content-Type: multipart/alternative;
boundary="_000_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_"
--_000_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
test with FA

--_000_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<body>
details
</body>
</html>

--_000_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_--

--_004_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_
Content-Type: details
Content-Description: details
Content-Disposition: attachment; filename="p2_eml.eml"; size=37836;
creation-date="Tue, 04 Aug 2020 10:48:34 GMT";
modification-date="Tue, 04 Aug 2020 10:48:34 GMT"
Content-Transfer-Encoding: base64
base64encoded data

--_004_DM5PR13MB138821372E6760B35B854B0CB74A0DM5PR13MB1388namp_--

From details <--- 2nd email starts --->
Return-Path: <emailaddress>
Delivered-To: email@address.com
Received: details
Received-SPF: details
Authentication-Results: details
Received: details
more details

Используя электронную почту python, он может получить только первое сообщение электронной почты, но не обрабатывает остальные сообщения электронной почты. Но это создает единственный объект msg, который относится к 1-му сообщению электронной почты в txt-файле.

Есть ли способ получить все электронные сообщения из txt-файла и обработать их одно за другим? msg = email.message_from_file (message) это выбирает только 1-й объект сообщения электронной почты. Не получает следующее сообщение obj.

Попытка кода:

    msg = email.message_from_file(message)

    # Dump extra information To, From, Date, Subject header values.
    dump_extra_info(msg)

    decoded_content_list = []
    for part in msg.walk():
        charset = part.get_content_charset();
        if part.get_content_type() == "application/octet-stream":
            logger.info("found content disposition returning ...")
            continue
        decoded_data = part.get_payload(decode=True)
        if decoded_data and charset is not None:
            utf8decoded = decoded_data.decode(charset)
            decoded_content_list.append(utf8decoded)
    return ' '.join(decoded_content_list)```
    ```

...