将一个MailItem设置为在使用C#调用Outlook Addin中的SaveAs之前发送

时间:2012-01-10 06:53:05

标签: c# email outlook outlook-addin outlook-2010

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

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);
    }
}

我继续阅读文件内容并使用webservices将文件发送到服务器。一切正常。

我遇到的问题是,如果我去打开它保存的文件,那么Outlook会将其打开,因为消息仍在编写中,用户可以非常轻松地再次单击“发送”按钮。

有没有办法在项目保存之前标记该项目已被发送,因此在它作为可读电子邮件而不是组合内电子邮件打开后打开时会被打开?

1 个答案:

答案 0 :(得分:1)

看一下this post(以及该页面的最后一个答案),这可能对您有帮助。

(使用ItemAdd事件)