2011-11-13 21 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イベントは、電子メールが送信されているときに発生するため、「送信時刻」は「今すぐ」です。メールが届かない場合でも、メールは「送信済みアイテム」に追加されます(存在しない受信者にメールを送信してみてください)。また、ユーザーは、ツール→オプション→Eメールオプション – GTG

+0

に移動することで、そのフォルダ内の送信済みアイテムを保存する機能をオフにすることができます。 UI、送信トレイでキューに入れられました...?それでは? – deostroll