在Outlook 2007中跟踪电子邮件

时间:2011-01-02 11:09:49

标签: c# email outlook vsto

问候Overflowers,

我正在尝试为特别签名的电子邮件开发VSTO / C#企业电子邮件跟踪器。 我依靠:

  1. Inspectors.NewInspector
  2. Inspector.Close
  3. Inspector.Activate
  4. Inspector.Deactivate
  5. 不知何故,Inspector事件会在一段时间后停止发射。 在检查标志后,我在1的正文中注册2,3和4。 我试图跟踪已经登记的检查员,但没有希望。 任何线索?

    更新:以下是示例代码。平均OnSelect和OnOpen发射几次,然后突然停止:

    using System;
    using System.Collections;
    using Microsoft.Office.Interop.Outlook;
    // using Microsoft.Office.Core;
    
    namespace eMailTrackingSystem
    {
        public enum TrackingEvent
        {
            Opened, Closed, Forwarded, Deleted
        }
    
        public partial class eMTSAddIn
        {
            private ArrayList trackedEmails = new ArrayList();
    
            private void InternalStartup()
            {
                this.Application.ActiveExplorer().SelectionChange += new ExplorerEvents_10_SelectionChangeEventHandler(OnSelect);
            }
    
            private void OnSelect()
            {
                Selection selection = this.Application.ActiveExplorer().Selection;
    
                foreach (object item in selection)
                {
                    if (item is MailItem)
                    {
                        MailItem email = (MailItem)item;
    
                        if (email.Subject == "eMTS" && !trackedEmails.Contains(email.EntryID))
                        {
                            email.Open += new ItemEvents_10_OpenEventHandler(OnOpen);
    
                            trackedEmails.Add(email.EntryID);
                        }
                    }
                }
            }
    
            private void OnOpen(ref bool cancel)
            {
            }
    
            private void OnClose()
            {
            }
        }
    }
    

    此致

1 个答案:

答案 0 :(得分:1)

您使用的是Inspector Wrappers吗?它们对于正确处理用户打开的每个项目至关重要:

为Outlook 2010开发Inspector Wrapper: http://msdn.microsoft.com/en-us/library/ff973716.aspx

类似的方法可用于监控用户在资源管理器中选择的项目。