【发布时间】: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。你给了我主意。问题已解决)
标签: python python-3.x mime