【问题标题】:Overriding Outlook's Default Sending function覆盖 Outlook 的默认发送功能
【发布时间】:2011-12-19 06:07:57
【问题描述】:

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

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

这是要求。

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

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

我希望您提供一种方法/方式来覆盖 Outlook 2010 中的默认发送功能

我已经阅读了几篇关于 MSDN、inspector wrappers 和执行自定义业务规则的文章,但我没有得到我想要的。我想要一个纯 C# 解决方案,而不是像赎回这样的第三方 dll。我试图尽可能具体,我希望是一样的:)

请帮助我:D 谢谢,

问候 - 山姆

【问题讨论】:

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


    【解决方案1】:

    在这里你有一个不同的解决方案。只需将此行包含在您的 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;
        }
    

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

    【讨论】:

      【解决方案2】:

      您需要处理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 
              }
      

      【讨论】:

      • 谢谢 SilverNinja,很抱歉回复晚了,我忙于我的学术工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多