2014-12-05 61 views
0

我想开发电子邮件跟踪插件的Outlook中的c#,我能够创建插件,但不知道如何跟踪从我的Outlook使用C#发送的电子邮件,请分享任何引用博客或代码。 我创建简单的Hello World插件前景在c#中开发电子邮件跟踪插件的Outlook#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml.Linq; 
using Outlook = Microsoft.Office.Interop.Outlook; 
using Office = Microsoft.Office.Core; 


namespace MyAddin 
{ 
public partial class ThisAddIn 
{ 
    private Office.CommandBar _objMenuBar; 
    private Office.CommandBarPopup _objNewMenuBar; 
    //private Outlook.Inspector Inspectors; 
    private Office.CommandBarButton _objButton; 
    private string menuTag = "MyMenu"; 
    Outlook.Inspectors inspectors; 
    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     this.MyMenuBar(); 
     //Inspectors = this.Application.Inspectors; 
     inspectors = this.Application.Inspectors; 
     inspectors.NewInspector += 
     new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 

    } 

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e) 
    { 
    } 

    void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
    { 
     Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem; 
     if (mailItem != null) 
     { 
      if (mailItem.EntryID == null) 
      { 
       mailItem.Subject = "This text was added by using code"; 
       mailItem.Body = "This text was added by using code"; 
      } 

     } 
    } 

    private void MyMenuBar() 
    { 
     this.ErsMyMenuBar(); 

     try 
     { 
      _objMenuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar; 
      _objNewMenuBar = (Office.CommandBarPopup) 
          _objMenuBar.Controls.Add(Office.MsoControlType.msoControlPopup 
                , missing 
                , missing 
                , missing 
                , false); 

      if (_objNewMenuBar != null) 
      { 
       _objNewMenuBar.Caption = "my Plugin"; 
       _objNewMenuBar.Tag = menuTag; 
       _objButton = (Office.CommandBarButton)_objNewMenuBar.Controls. 
       Add(Office.MsoControlType.msoControlButton, missing, 
        missing, 1, true); 
       _objButton.Style = Office.MsoButtonStyle. 
        msoButtonIconAndCaption; 
       _objButton.Caption = "my Plugin"; 
       //Icon 
       _objButton.FaceId = 500; 
       _objButton.Tag = "ItemTag"; 
       //EventHandler 
       _objButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(_objButton_Click); 
       _objNewMenuBar.Visible = true; 
      } 
     } 
     catch (System.Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show("Error: " + ex.Message.ToString() 
               , "Error Message"); 
     } 

    } 


    #region VSTO generated code 
    private void InternalStartup() 
    { 
     this.Startup += new System.EventHandler(ThisAddIn_Startup); 
     this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); 
    } 
    #endregion 

    #region "Event Handler" 
    #region "Menu Button" 

    private void _objButton_Click(Office.CommandBarButton ctrl, ref bool cancel) 
    { 
     try 
     { 
      System.Windows.Forms.MessageBox.Show("Hello World"); 
     } 
     catch (System.Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show("Error " + ex.Message.ToString()); 
     } 
    } 

    #endregion 

    #region "Remove Existing" 

    private void ErsMyMenuBar() 
    { 
     // If the menu already exists, remove it. 
     try 
     { 
      Office.CommandBarPopup _objIsMenueExist = (Office.CommandBarPopup) 
       this.Application.ActiveExplorer().CommandBars.ActiveMenuBar. 
       FindControl(Office.MsoControlType.msoControlPopup 
          , missing 
          , menuTag 
          , true 
          , true); 

      if (_objIsMenueExist != null) 
      { 
       _objIsMenueExist.Delete(true); 
      } 
     } 
     catch (System.Exception ex) 
     { 
     System.Windows.Forms.MessageBox.Show("Error: " + ex.Message.ToString(), "Error Message"); 
     } 
    } 
    #endregion 
    #endregion 
} 

}

回答

0

我看到你使用的命令栏的代码。从Office 2007开始使用新的UI。从Office 2010开始,不推荐使用命令栏。您需要使用Fluent UI(又名功能区UI)。您可以在下面的系列文章阅读更多有关新UI:

有追踪邮件不同的方式:

  1. 添加一个自定义属性。这不是最好的办法,因为财产可以消失。
  2. 使用Outlook项目的对话*(* Id + *索引)属性。 Outlook使用这些属性来分组对话中的相关项目。
  3. 显式将您的ID添加到主题行。

这是给你这办法是选择......

+0

可以请你告诉我怎么可以跟踪电子邮件被打开与否。我能够获得插件。 – 2014-12-09 11:45:02

+0

您是否试图处理[NewInspector](http://msdn.microsoft.com/en-us/library/office/ff867841(v = office.15).aspx)和[Activate](http:// msdn .microsoft.com/en-us/library/office/ff865363(v = office.15).aspx)events? – 2014-12-09 19:28:55