使用C#在Outlook加载项中调用“另存为”之前,将邮件项设置为已发送

本文关键字:另存为 设置 之前 Outlook 加载项 调用 使用 | 更新日期: 2023-09-27 18:20:03

我正在构建一个Outlook 2010插件,将其与一些业务软件集成,并捕获了ItemSend事件。我检查它是否是MailItem,如果是,我调用SaveAs函数将其作为.msg保存到文件系统(在users临时文件夹中)。

void Application_ItemSend(object Item, ref bool Cancel)
{
    if(Item is Outlook.MailItem)
    {
        Outlook.MailItem mailitem = (Outlook.MailItem)Item;
        string filename = "somefilename.msg";
        string path = System.IO.Path.GetTempPath();
        string fullPathName = path+filename;
        mailitem.SaveAs(fullPathName, Outlook.OlSaveAsType.olMSG);
    }
}

我继续读取文件内容,并使用Web服务将文件发送到服务器。一切都很好。

我遇到的问题是,如果我打开它保存的文件,Outlook会将其作为一封仍在撰写中的邮件打开,用户可以很容易地再次单击"发送"按钮。

有没有一种方法可以标记项目在保存之前已经发送,因此在保存之后打开时,它会以可读电子邮件而不是合成电子邮件的形式打开?

使用C#在Outlook加载项中调用“另存为”之前,将邮件项设置为已发送

看看这篇文章(以及该页面上的最后一个答案),这可能会对你有所帮助。

(利用ItemAdd事件)