C++ Outlook 邮件项目替换正文并在关闭时丢弃
C++ Outlook MailItem replace body and discard on close
我在 Outlook 中有一个插件,当电子邮件来自外部或不受信任的来源时,它会在电子邮件中添加警告和电子邮件中的链接。 无论如何,当我替换正文中的某些内容时,当电子邮件以全视图打开时(没有阅读窗格,双击邮件项目的全视图),我甚至关闭邮件项目并丢弃更改,一切正常。(mailitem.onclose(olDiscard)
)
当我在打开阅读窗格的情况下执行此操作时,当我放弃更改时,Outlook 仍然保存更改,或者当用户尝试关闭 Outlook 时,它会询问用户"是否要将更改保存到 ....."如果用户在此期间单击了多封电子邮件,它会显示用户单击的所有电子邮件的弹出问题,我们替换了其正文。
这里的解决方案是什么?我该怎么做才能解决这个问题?我想对链接和正文进行更改,但是当用户单击另一封电子邮件时会丢弃它们。最终目标不是让 Outlook 询问用户"是否要保存更改..."弹出窗口。请指教。
我也无法对检查器进行更改,因为检查器是只读的。
附言插件是用C++写的。
解决方案是避免修改消息正文,如果您不想保留更改。
如果要向用户显示警告,请将任务窗格添加到检查器。或者只是用类别标记消息 - 它将显示在检查器中。
Outlook 对象模型不提供任何用于处理超链接单击的内容。作为可能的解决方法,您可以考虑实现以下功能:
-
在 Outlook 中选择或打开项目后,您可以将原始 URL 替换为您自己的 URL,如果需要,您可以在其中将原始 URL 作为编码参数传递。因此,如果允许打开URL,则可以进一步重定向请求。请注意,您可以使用资源管理器类的 SelectionChange 事件,当用户以编程方式或通过与用户界面交互选择不同或附加Microsoft Outlook 项时,将触发该事件。当用户(以编程方式或通过用户界面)单击或切换到包含项目的其他文件夹时,也会发生此事件,因为 Outlook 会自动选择该文件夹中的第一个项目。但是,如果文件夹是文件系统文件夹或显示具有当前 Web 视图的任何文件夹,则不会发生此事件。 您还可以考虑处理 Outlook 项目的 Open 事件,该事件在
Inspector
中打开父对象的实例时触发。 发生此事件时,Inspector
对象已初始化,但尚未显示。Open 事件与 Read 事件的不同之处在于,每当用户在支持单元格内编辑的视图中选择项目以及在检查器中打开项目时,都会发生Read
。 -
另一种可能的解决方案是注册自定义 URL 处理程序。因此,基本上,将启动您注册的应用程序,而不是 Web 浏览器,您可以在其中决定是否启动 Web 浏览器并遵循 URL。有关详细信息,请参阅安装和注册协议处理程序。
- Azure Kinect 使用正文索引映射裁剪正文
- 使用 Outlook 2016 Microsoft Store 连接到 Outlook COM
- 为什么调用没有正文的纯虚拟方法不会导致链接器错误?
- 获取加密的正文响应WinHttp HTTPS
- 如何 Lambda 线程正文
- 解析从 C# 到正文C++ MSMQ 消息,每个字母用 '0 分隔
- 简单的boost ASIO https不返回正文
- 如何在不在基类中的派生类中访问 STL 类的成员函数?(正文详细说明)
- 如何在Crypto++ ECDSA中从签名正文中获取签名长度
- 具体的模板正文,它在 dll 中并在客户端中调用
- Outlook MAPI in C++ 应用程序中:按姓名查找联系人
- 预览由Microsoft Outlook 对象库生成的电子邮件
- 使用自定义简单 Mapi DLL,无需安装 Outlook
- 通过 EWS 发送邮件:架构验证:无效的子元素"正文"
- 浏览器将随机HTTP消息正文发送到我的boost.asio服务器.我可以更改此设置吗?
- 在 cpp 正文中声明方法时未定义的符号
- 使用大型正文提升 ASIO 发布请求
- C++ Outlook 邮件项目替换正文并在关闭时丢弃
- gSoap 不包括信封和正文开始标签
- Outlook 2010 c++插件- HTML电子邮件正文检索