You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改MSGKIT代码使生成的Outlook .MSG文件作为可编辑模板打开

如何修改MSGKIT代码使生成的Outlook .MSG文件作为可编辑模板打开

我之前也碰到过一模一样的问题!MsgKit默认生成的邮件会被Outlook识别为已接收的已读邮件,所以打开是只读查看模式。要让它变成可以直接编辑的模板,只需要调整几个关键属性就行,我帮你把代码修改好了,你可以直接用:

string localPath = _environment.WebRootPath;
string EmailGUID = Guid.NewGuid().ToString();
string EmailPath = localPath + "\\files\\email_" + EmailGUID + ".msg";

using (var email = new Email(
    new Sender("peterpan@neverland.com", "Peter Pan"),
    // 如果不需要"代表发送"的逻辑,可以去掉Representing参数
    // new Representing("tinkerbell@neverland.com", "Tinkerbell"),
    "Hello Neverland subject"))
{
    email.Recipients.AddTo("captainhook@neverland.com", "Captain Hook");
    email.Recipients.AddCc("crocodile@neverland.com", "The evil ticking crocodile");
    email.Subject = "This is the subject";
    email.BodyText = "Hello Neverland text";
    email.BodyHtml = "<html><head></head><body><b>Hello Neverland html</b></body></html>";
    email.Importance = MsgKit.Enums.MessageImportance.IMPORTANCE_HIGH;
    
    // 关键修改1:设置为未发送草稿状态,这是让Outlook进入编辑模式的核心
    email.MessageFlags = MsgKit.Enums.MessageFlags.MSGFLAG_UNSENT;
    // 关键修改2:设置图标为未发送邮件的图标,符合草稿的视觉提示
    email.IconIndex = MessageIconIndex.UnsentMail;
    
    email.Save(EmailPath);
}

var contentType = "Application/vnd.ms-outlook";
var fileStream = new FileStream(
    EmailPath,
    FileMode.Open,
    FileAccess.Read,
    FileShare.Read,
    4096,
    FileOptions.DeleteOnClose);
return File(fileStream, contentType, "email.msg");

核心修改点说明:

  • MessageFlags = MessageFlags.MSGFLAG_UNSENT:这是最关键的一步,它会给.msg文件打上"未发送草稿"的标记,Outlook识别到这个标记后,就会以编辑模式打开文件,而不是只读查看模式。
  • IconIndex = MessageIconIndex.UnsentMail:把邮件图标从已读邮件改成未发送邮件的样式,让用户从视觉上也能直观知道这是可编辑的草稿。
  • (可选)如果你的业务场景不需要"代表他人发送"的逻辑,可以去掉Representing参数,因为草稿邮件一般不需要这个设置,去掉后更符合常规新邮件模板的结构。

这样修改后,你生成的.msg文件下载到本地,用Outlook打开时就会和你之前手动上传的模板一样,直接进入编辑界面,收件人、主题、正文都可以随意修改,修改完成后直接点击发送就能正常发出啦!

火山引擎 最新活动