C ++ Outlook MailItem在关闭时替换正文并丢弃

时间:2018-01-24 15:52:09

标签: c++ outlook outlook-addin

我在Outlook中有一个插件,当电子邮件来自外部或不受信任的来源时,会向邮件主机和电子邮件中的链接添加警告。 无论如何,当我在正文中替换某些内容时,当在完整视图中打开电子邮件时(没有阅读窗格,双击邮件项目的完整视图),我将mailItem关闭甚至关闭并且我放弃更改,一切正常。 ({{1}})

当我在阅读窗格时执行此操作时,当我放弃更改时,Outlook仍会保存更改,或者当用户尝试关闭Outlook时,它会询问用户“是否要将更改保存到.....”和如果用户在此期间点击了多封电子邮件,则会显示用户点击的所有电子邮件的弹出式问题,我们将其替换为正文。

这里有什么解决方案?我该怎么做才能解决这个问题?我想对链接和正文进行更改,但在用户点击其他电子邮件时将其丢弃。最终目标是没有Outlook询问用户“你想保存更改......”弹出窗口。请指教。

我也不能对检查员进行更改,因为检查员是只读的。

P.S。插件是用C ++编写的。

2 个答案:

答案 0 :(得分:0)

解决方案是,如果您不想保留更改,请避免修改邮件正文。

如果要向用户显示警告,请将任务窗格添加到检查器。或者只是用一个类别标记消息 - 它将显示在检查员中。

答案 1 :(得分:0)

Outlook对象模型不提供处理超链接点击的任何内容。作为一种可能的解决方法,您可以考虑实现以下功能:

  1. 在Outlook中选择或打开项目时,您可以将原始URL替换为您自己的URL,如果需要,您可以将原始URL作为编码参数传递。因此,如果允许打开URL,则可以进一步重定向请求。注意,您可以使用Explorer类的SelectionChange事件,当用户以编程方式选择其他或其他Microsoft Outlook项目或通过与用户界面交互时触发该事件。当用户(以编程方式或通过用户界面)单击或切换到包含项目的其他文件夹时,也会发生此事件,因为Outlook会自动选择该文件夹中的第一个项目。但是,如果文件夹是文件系统文件夹或者显示具有当前Web视图的任何文件夹,则不会发生此事件。 此外,您可以考虑处理在Inspector中打开父对象实例时触发的Outlook项目的Open事件。发生此事件时,Inspector对象已初始化但尚未显示。 Open事件与Read事件的不同之处在于,只要用户选择支持单元格编辑的视图中的项目以及在检查器中打开项目时,就会发生Read

  2. 另一种可能的解决方案是注册自定义URL处理程序。因此,基本上,您的注册应用程序将启动而不是Web浏览器,您可以决定是否启动Web浏览器并遵循URL。有关详细信息,请参阅Installing and Registering Protocol Handlers

相关问题