Как сохранить обменное письмо с изображениями в виде файла HTML - PullRequest
0 голосов
/ 05 июня 2019

Вид noob с python, извините, если это не совсем понятно.

Я пытаюсь сохранить электронное письмо, содержащее изображения в HTML-файле.Я могу получить письмо, но в тот момент, когда я его сохраняю, содержимое выглядит совершенно неверно.

Я использую этот код:

#!usr/bin/env python3   

import imaplib
import email
import re
import getpass
import sys
from datetime import datetime, timedelta

user = input("Username: ")
pwd = getpass.getpass("Password: ")

mail = imaplib.IMAP4_SSL('outlook.office365.com')
try:
    mail.login(user +"DOMAIN",pwd)
except (imaplib.IMAP4_SSL.error, imaplib.IMAP4.error) as err:
    print('[ERROR] - Login failed!')
    sys.exit()

mail.list()
mail.select("<FOLDER>")

yesterday = (datetime.now() - timedelta(1)).strftime("%Y_%m_%d")
report_time = yesterday
subject = (report_time + "WHATEVER")

# Begin of script
result, data = mail.search(None, '(SUBJECT "{0}")'.format(subject))

if data:
    # data is a list.
    ids = data[0]
    # ids is a space separated string
    if ids:
        id_list = ids.split()
        # Get the last one
        latest_email_id = id_list[-1]
        # Get the result and the data on the email (status + info)
        result, data = mail.fetch(latest_email_id, "(RFC822)")
        raw_email = data[0][1].decode('utf-8')
        # Getting the email content
        body = email.message_from_string(raw_email)
        if body.is_multipart():
            for payload in body.get_payload():
                if payload.get_content_type() == "text/html":
                    body = payload.get_payload(decode=True)
                    body = body.decode()

                    # This part is the issue I guess
                    f = open((result.html), 'wb')
                    f.write((' '.join(map(str, body)) + '\n').encode())
                    f.close()

У меня естьощущение, что я "расшифровываю" электронную почту, и это причина того, что файл содержит странные данные.

Потому что, если я открою файл result.html, он будет содержать что-то вроде:

htmlxmlns: v = "urn: schemas - microsoft - com: vml

Ничего похожего на любую переменную тела, печатающую на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...