python - 如何在 Outlook 中编辑使用 email.generator 生成的 .eml 文件?
问题描述
我有一个代码,它生成我在 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)
解决方案
要生成可编辑的 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)
推荐阅读
- c# - 如何调用“nuget restore”以恢复到托管在内部 nuget 服务器中的特定目录、特定包
- python - Pandas CustomBusinessDay 抵消只在一些假期工作
- c - 如何优化图像像素化程序
- excel - 如何通过自定义 Excel 功能区打开用户窗体
- asp.net-web-api - 带有接受标头和 url 参数的 Web API 内容协商格式化程序
- spring - 使用@Value Spring Annotation 从.yaml 读取的属性映射的正确用法是什么
- java - 如何在没有堆栈/正则表达式的情况下检查平衡括号?
- bash - 将文件作为一个字符串参数传递给 bash 函数
- sql - 如何将 sql 查询转换为 linq LEFT OUTER JOIN
- ios - 使用自动布局以编程方式呈现弹出视图控制器