2011-11-13 73 views
0

我對VSTO有一個小問題。我需要獲得發送的郵件並堅持它的內容。 MailSent事件是否有一種?VSTO郵件發送事件

我現在發現的唯一解決方案是在SentItems文件夾上掛接ItemAdd事件。

Outlook.Folder sentItems = 
       Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) 
       as Outlook.Folder; 
sentItems.Items.ItemAdd += new ItemsEvents_ItemAddEventHandler(SentItemFolder_ItemAdd); 

private void SentItemFolder_ItemAdd(object addedItem) 
     { 
      Outlook.MailItem newItem = (Outlook.MailItem)addedItem; 

      MessageBox.Show(newItem.EntryID); 
     } 

這真的是唯一的出路或任何你知道任何更好的解決方案?

感謝

回答

1

可以使用ItemSend事件對於這一點,就像這樣:

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    this.Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend); 
} 


private void Application_ItemSend(object Item, ref bool Cancel) 
{ 
    // Code to run when item is being sent 
} 
+0

是後來的項目還沒有送到。我在問ItemSent事件。如果您檢查您獲得的項目作爲參數,它尚未發送,所有有關發送時間和類似信息尚未準備就緒。發送成功也不難過。 – MaiOM

+0

@MaiOM我不知道任何發送事件。我在博客文章中看到,您並不是唯一使用SentItems.ItemAdd來捕捉此內容的人,但實際上我認爲ItemSend是更好的選擇。 ItemSend事件發生在電子郵件發送時,所以「發送時間」是「現在」。郵件將被添加到「已發送郵件」中,即使郵件從未發送(嘗試將郵件發送給不存在的收件人)。此外,用戶可以關閉該功能,以保存在該文件夾中發送的項目,通過轉到工具 - >選項 - >電子郵件選項 – GTG

+0

因此,當該項目(即電子郵件/會議請求,說)後點擊發送在用戶界面,在發件箱中排隊......?然後怎樣呢? – deostroll