C# 4.0 覆盖Outlook';s的默认发送功能

C# 4.0 覆盖Outlook';s的默认发送功能,c#-4.0,vsto,outlook-addin,outlook-2010,C# 4.0,Vsto,Outlook Addin,Outlook 2010,我正在使用VSTO、VS2010和Outlook 2010为Outlook开发解决方案 我想覆盖Outlook发送行为的默认功能 这是要求 当用户点击发送按钮时,我必须检查它是否是一条短信——“IPM.Note.Mobile.SMS”。如果它是短信,那么我必须给我的发送自定义实现。如果不是短信,则默认发送行为 对于自定义发送部分,我必须使用自己的web服务并处理它 我想从您那里得到的是一种覆盖Outlook 2010中默认发送功能的方法 我读过一些关于MSDN、inspector包装器和强制执行

我正在使用VSTO、VS2010和Outlook 2010为Outlook开发解决方案

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

这是要求

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

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

我想从您那里得到的是一种覆盖Outlook 2010中默认发送功能的方法

我读过一些关于MSDN、inspector包装器和强制执行自定义业务规则的文章,但我没有得到我想要的。我想要一个纯C#解决方案,而不是像redemption这样的第三方dll。我尽量说得具体一些,我也希望如此:)

请帮帮我:D 谢谢

问候-
Sam

您需要处理Microsoft.Office.Interop.Outlook.Send事件(
ItemEvents\u 10\u SendEventHandler
)。你可以看到参考资料。下面提供了一个粗略的例子。您可以从inspector获取消息类,从应用程序引用获取活动inspector

((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 
        }

这里有一个不同的解决方案。只需将此行包括在外接程序启动中:

Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);  
当然,事件处理程序的实现:

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

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

谢谢SilverNinja,很抱歉回复太晚,我正忙于我的学术工作。