【问题标题】:Outlook Add-in Development : Prevent Forwarding Mail 'As Attatchment'Outlook 加载项开发:防止转发电子邮件“作为附件”
【发布时间】:2023-01-31 15:30:24
【问题描述】:

如何在 C# Outlook 加载项开发中检测“Forward As Attatchment”事件。

我想在消息框中显示消息“您不能将此邮件作为附件转发”。

请注意,这不是 VSTO 应用程序。

【问题讨论】:

    标签: c# outlook outlook-addin office-addins email-attachments


    【解决方案1】:

    没有直接的场景或在 Outlook 中处理此类情况的简单方法。有几种方法可以作为可能的解决方法来处理这种情况。

    第一的可能的解决方案是处理 MailItem.Forward 事件,该事件在用户为项目选择 Forward 操作时触发,或者在为项目调用 Forward 方法时触发,该项目是父对象的实例。在事件处理程序中,您可以检查附加文件、显示消息框并在需要时取消操作。要处理项目级事件,您可以考虑创建一个检查器包装器(或项目包装器),您可以在其中正确设置事件处理程序,有关更多信息,请参阅Implement a wrapper for inspectors and track item-level events in each inspector

    第二可能的解决方案是处理 Outlook 中 Application 类的 ItemSend 事件,您可以在其中处理所有外发电子邮件,而不仅仅是转发。

    第三解决方案是重新调整负责 Outlook 中操作的 UI 控件的用途。因此,您可以将默认操作替换为您自己的操作,或者只是在其前面添加您的自定义逻辑。有关详细信息,请参阅Temporarily Repurpose Commands on the Office Fluent Ribbon

    【讨论】:

      【解决方案2】:

      即使(在IDispatch::Invoke 级别)当用户单击“作为附件转发”时,它会触发一个带有 0xF618 dispid 的事件。

      如果使用 Redemption 是一个选项(我是它的作者),它会公开一个可取消的 SafeMailItem.OnForwardAsAttachment 事件:

      private SafeMailItem _sItem;
      private MailItem _oItem;
      ...
      _oItem = _application.ActiveExplorer().Selection[1];
      _sItem = new SafeMailItem();
      _sItem.Item = _oItem;
      _sItem.ForwardAsAttachment += OnForwardAsAttachment;
      ...
      private void OnForwardAsAttachment(object Forward, ref bool Cancel)
      {
          MailItem newMessage = (MailItem)Forward;
          if (OlSensitivity.olConfidential == _oItem.Sensitivity)
          {
              MessageBox.Show($"Confidential message '{_oItem.Subject}' cannot be forwarded");
              Cancel = true;
          }
          else
          {
              newMessage.Subject = _oItem.Subject;
              newMessage.Body = $"Please see the attached message '{_oItem.Subject}'.";
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        • 1970-01-01
        相关资源
        最近更新 更多