如何在 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设置自动回复操作步骤