You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MsgKit创建的.msg文件无法发送,打开后显示已发送状态

问题:MsgKit创建的.msg文件打开显示已发送状态,无法编辑发送

我用MsgKit创建了一个.msg文件,打开后它显示为已发送状态,但我希望打开后能添加邮件正文并完成发送操作。

相关C#代码如下:

using (var email = new Email(
    new Sender("me@mail.com", "Me"),
    new Representing("me@mail.com", "Me"),
    messageSubject))
{
    if (to != null)
    {
        int t = 0;
        while (t < to.GetLength(0))
        {
            if (!string.IsNullOrEmpty(to[t])) { email.Recipients.AddTo(to[t], to[t]); }
            t++;
        }
    }
    email.Subject = "SUBJECT";
    email.Attachments.Add(@"c:\Temp\Cover Page_25.010398_2025515175.pdf");
    email.Save(@"c:\Temp\email.msg");

    var ps = new ProcessStartInfo(@"c:\Temp\Email.msg")
    {
        UseShellExecute = true,
        Verb = "open"
    };
    Process.Start(ps);
}

打开后的界面呈现已发送状态,无法编辑正文和执行发送操作。


解决方案

默认情况下,MsgKit创建的邮件会被标记为已发送状态,只需在保存邮件前添加一行代码,将邮件标记为未发送(草稿)状态即可:

在email.Save()之前添加:

email.MessageFlags = MessageFlags.MsgFlagUnsent;

修改后的完整代码:

using (var email = new Email(
    new Sender("me@mail.com", "Me"),
    new Representing("me@mail.com", "Me"),
    messageSubject))
{
    if (to != null)
    {
        int t = 0;
        while (t < to.GetLength(0))
        {
            if (!string.IsNullOrEmpty(to[t])) { email.Recipients.AddTo(to[t], to[t]); }
            t++;
        }
    }
    email.Subject = "SUBJECT";
    email.Attachments.Add(@"c:\Temp\Cover Page_25.010398_2025515175.pdf");
    // 设置邮件为未发送(草稿)状态
    email.MessageFlags = MessageFlags.MsgFlagUnsent;
    email.Save(@"c:\Temp\email.msg");

    var ps = new ProcessStartInfo(@"c:\Temp\Email.msg")
    {
        UseShellExecute = true,
        Verb = "open"
    };
    Process.Start(ps);
}

添加该设置后,打开生成的.msg文件时会进入草稿编辑界面,可正常添加正文并发送。

内容的提问来源于stack exchange,提问作者Raging Hamster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:33:19