覆盖Outlook的默认发送功能

时间:2011-11-01 05:35:23

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

我正在使用VSTO,VS 2010和Outlook 2010开发Outlook解决方案。

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

这是要求。

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

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

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

我在MSDN,检查器包装器和强制执行自定义业务规则上阅读了一些文章,但我没有得到我想要的东西。我想要一个纯粹的C#解决方案而不是第三方dll喜欢兑换。我试图尽可能具体,我希望相同:)

请帮帮我:D 谢谢,

问候 - 萨姆

2 个答案:

答案 0 :(得分: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 
        }

答案 1 :(得分:3)

这里有一个不同的解决方案。只需在Add-in_StartUp中包含此行:

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

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

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

这将拦截您发送的任何邮件。