如何将带有图像的exchange电子邮件保存为HTML格式

2024-03-29 07:43:27 发布

您现在位置:Python中文网/ 问答频道 /正文

有点像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文件,它包含如下内容:

h t m l x m l n s:v=“u r n:s c h m a s-m i c r o s o f t-c o m:v m l

与屏幕上打印的任何body变量都不相似


Tags: 文件theimportididsdataifis