如何知道mailitem已经到达该文件夹

时间:2014-07-04 06:58:37

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

当用户点击“发送”按钮将邮件项目移动到我的文件夹文件夹并停止发送功能时,我必须编写代码。 我通过以下代码实现了这一目标:

       void Application_ItemSend(object Item, ref bool Cancel)
        {
                Outlook.MailItem mailItem = Item as Outlook.MailItem;
                Cancel = true;
                if (mailItem != null)
                {
                    var attachments = mailItem.Attachments;

                    string folderPath =
                      Application.Session.
                      DefaultStore.GetRootFolder().FolderPath
                      + @"\Outbox\My Outbox";
                    Outlook.Folder folder = GetFolder(folderPath);
                    if (folder != null)
                    {
                        mailItem.Move(folder);

                    }
                  }
         }

我的问题是,当mailitem到达My Outbox文件夹时,我必须触发代码段。 我是VSTO和插件的新手。请告诉我如何实现这一目标。 任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

如果要检测项目何时添加到Outlook文件夹中,则需要使用ItemAddItems集合上的Folder事件。

以下是如何检测何时将MailItem添加到收件箱文件夹中的示例。 在ThisAddIn.cs文件中添加以下代码:

private Items _inboxItems;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    MAPIFolder inboxFolder = Application.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    _inboxItems = inboxFolder.Items;

    _inboxItems.ItemAdd += InboxItems_ItemAdd;

    Marshal.ReleaseComObject(inboxFolder);
}

private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
    Marshal.ReleaseComObject(_inboxItems);
}

private void InboxItems_ItemAdd(object item)
{    
    if (item is MailItem)
    {
        // Add your code here        
    }
}