如何在 Outlook 中编辑使用 email.generator 生成的 .eml 文件?

Posted

技术标签:

【中文标题】如何在 Outlook 中编辑使用 email.generator 生成的 .eml 文件?【英文标题】:How to edit .eml file generated with email.generator in Outlook? 【发布时间】:2019-12-11 23:06:18 【问题描述】:

我有一个代码,它生成我在 Outlook 中打开的 .eml 消息文件。但是消息文件是不可编辑的(不能编辑这个文件)。例如:我想添加新的发件人或收件人,但我不能这样做。 有谁知道,如何解决这个问题,或者可能有另一种方法来创建消息文件?

import email
from email import generator
from email.mime.text import MIMEText
from email.encoders import encode_base64
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
import json
import SQL_from_DB
import os
import re

def create_mail(attach_file_name, message_json, mail_template_path, save_path, database, db_username, db_password, driver):
    file_name_mail_template = mail_template_path + re.sub("QWE:\[.*?\]\s+","",message_json['message']) + '.txt'

    try:
        mail_template_file = open(file_name_mail_template.encode('utf-8'), 'r', encoding="utf-8")
    except:
        print("Ошибка открытия шаблона пиьсма \"" + re.sub("QWE:\[.*?\]\s+","",message_json['message']) + ".txt\"")
        sys.exit()

    mail_template_text = mail_template_file.read()
    for var, value in message_json.items():
        mail_template_text = mail_template_text.replace('$' + str(var) + '', str(value))
    # print(mail_template_text)
    msg = MIMEMultipart()
    msg['Subject'] = message_json['message']
    msg['From'] = 'qwe@qwe.qwe'
    msg['To'] = SQL_from_DB.SQL_select(database, db_username, db_password, driver, message_json['DOMAINNAME'])

    #add attachment
    attach_file = open(attach_file_name.encode('utf-8'), 'rb')
    attachment = MIMEBase("application", "msword")
    #attachment = MIMEBase("application", "pdf")
    attachment.set_payload(attach_file.read())
    attach_file.close()
    encode_base64(attachment)
    attachment.add_header('Content-Disposition','attachment',filename='Events' + ".zip")
    msg.attach(attachment)
    #текст письма
    msg.attach(MIMEText(mail_template_text, 'html'))

    #save message file
    with open(save_path.encode("utf-8"), 'w') as out:
        gen = email.generator.Generator(out)
        gen.flatten(msg)
        return(save_path)

【问题讨论】:

您对其他来源的 .eml 文件有此问题吗?这可能是 Outlook 的问题,而不是 .eml 或代码。在 Thunderbird 中,您不能编辑现有的电子邮件 - 除了电子邮件 im 文件夹“草稿”。要编辑其他电子邮件,您可以选择“编辑为新邮件”(右键单击邮件,它会显示带有此选项的菜单)。 哦!谢谢,@furas。你给了我主意。问题已解决) 【参考方案1】:

要生成可编辑的 Outlook 文件,只需要生成不是 .eml 而是 .emltpl(Outlook 消息模板文件)。

#save message file
    with open('/save_path/message.emltpl', 'w') as out:
        gen = email.generator.Generator(out)
        gen.flatten(msg)
        return(save_path)

【讨论】:

以上是关于如何在 Outlook 中编辑使用 email.generator 生成的 .eml 文件?的主要内容,如果未能解决你的问题,请参考以下文章

outlook 如何设置自动回复

outlook如何设置自动回复?

outlook如何设置自动回复 outlook设置自动回复操作步骤

从任何外部应用程序启动编辑器窗口时,Outlook插件不会显示

通过 Outlook 插件编辑电子邮件正文中的文本

outlook2013怎么解决脱机工作?