【问题标题】:Outlook.ItemsEvents Get mailItem when adds to the sent mailsOutlook.ItemsEvents 添加到已发送邮件时获取 mailItem
【发布时间】:2018-05-31 19:59:38
【问题描述】:

我有一个带有两个功能区的 Outlook 插件(用于阅读邮件和撰写邮件)。

我创建了一个事件,以便在发送后发送到已发送的项目时收到一封电子邮件。

这是我的 ThisAddIn.cs

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    OutlookApplication = Application as Outlook.Application;
    OutlookInspectors = OutlookApplication.Inspectors;
    OutlookInspectors.NewInspector +=
        new Outlook.InspectorsEvents_NewInspectorEventHandler(OutlookInspectors_NewInspector);

    var sentBoxItems =
        this.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail).Items;
    sentBoxItems.ItemAdd +=
        new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemsAdd);
}

private void Items_ItemsAdd(object Item)
{
    if (Item != null)
        Helpers.SaveMailSent((Outlook.MailItem)Item); // Here do stuff to save mail
}

我试图在单击“发送”按钮时获取事件,但 mailItem 变为 null。

现在我正在尝试获取新邮件何时发送并进入已发送文件夹。

问题是每次发送邮件时都不会触发事件(有时会执行,但有时不会)

【问题讨论】:

    标签: vsto outlook-addin


    【解决方案1】:

    首先,您需要保持源对象处于活动状态,即防止其销毁或释放。要实现它,您必须在类级别声明源对象:

     private Outlook.Items sentBoxItems = null;
    
     private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        OutlookApplication = Application as Outlook.Application;
        OutlookInspectors = OutlookApplication.Inspectors;
    
        sentBoxItems =
            this.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail).Items;
        sentBoxItems.ItemAdd +=
            new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemsAdd);
    }
    
    private void Items_ItemsAdd(object Item)
    {
        if (Item != null)
            Helpers.SaveMailSent((Outlook.MailItem)Item); // Here do stuff to save mail
    }
    

    还要注意以下事实:

    1. MailItem 类的DeleteAfterSubmit 属性允许设置一个布尔值,如果邮件副本在发送时未保存,则为True,如果副本保存在已发送邮件文件夹中,则为False。因此,已发送邮件将永远不会添加到已发送邮件文件夹中。
    2. 如果将多个项目添加到文件夹(通常超过 16 个),则不会触发 ItemAdd 事件。这是 OOM 中的一个众所周知的问题。

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 2018-06-07
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多