2011-11-01 84 views
2

正在开发Outlook的VSTO,VS 2010和Outlook 2010解决方案。覆盖Outlook的默认发送功能

我想覆盖Outlook的发送行为的默认功能。

这是要求。

当用户点击发送按钮,我必须检查它是否是一个短信 - “IPM.Note.Mobile.SMS”。如果这是一个短信,那么我必须给我的自定义实施发送。如果它不是SMS,则默认发送行为。

对于自定义发送部分,我必须使用我自己的Web服务并处理它。

我想要的是一种方法/方法来覆盖Outlook 2010中的默认发送功能

我已经阅读了MSDN上的几篇文章,检查器包装和执行自定义业务规则,但我没有得到我想要的。我想要一个纯粹的C#解决方案而不是第三方的dll像赎回。我尝试尽可能我可以,我期望的一样:)

请帮我要具体:d 谢谢,

问候 - 山姆

回答

6

您需要处理Microsoft.Office.Interop.Outlook.Send事件(ItemEvents_10_SendEventHandler )。你可以看到参考here。下面提供了一个粗略的例子。您可以从应用程序参考中获取检查器和活动检查器的消息类。

((Outlook.ItemEvents_10_Event)inspector.CurrentItem).Send += new Outlook.ItemEvents_10_SendEventHandler(Inspector_Send); 

void Inspector_Send(ref bool Cancel) 
     { 
      if (IPM.Note.Mobile.SMS) 
      { 
       // custom implementation 
      } 
      else 
       Cancel = true; // don't send the message out 
     } 
+0

谢谢SilverNinja,对于迟到的回复感到抱歉,我忙于学习。 – Sam

3

在这里你有一个不同的解决方案。刚加入这一行中添加 - in_StartUp:

Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend); 

和当然,事件处理程序的实现:

void Application_ItemSend(object Item, ref bool Cancel) 
    { 
     MessageBox.Show("Yihha!!"); 
     Cancel = true; 
    } 

这将拦截您发送的任何消息。

+0

工作完美,感谢分享 – joe