【问题标题】:Set a MailItem as sent before calling SaveAs in Outlook Addin with C#在使用 C# 在 Outlook 插件中调用 SaveAs 之前将 MailItem 设置为已发送
【发布时间】:2012-02-06 15:34:40
【问题描述】:

我正在构建一个 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);
    }
}

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

我遇到的问题是,如果我打开它保存的文件,然后 Outlook 将其作为仍在撰写的消息打开,用户可以很容易地再次单击“发送”按钮。

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

【问题讨论】:

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


    【解决方案1】:

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

    (利用ItemAdd事件)

    【讨论】:

    • 所以在它被移动到发送的项目时捕获它然后保存它?我没有想到这一点。谢谢。 :)
    • 换句话说:您可以在 Sent Items 文件夹上使用 Items.ItemAdd 事件,而不是使用 Application.ItemSend 事件 - 到那时消息将处于已发送状态。
    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    相关资源
    最近更新 更多