Вид 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
Ничего похожего на любую переменную тела, печатающую на экране.