首页 > 解决方案 > 如何通过 Delphi Winapi.Mapi 修复“发送电子邮件”?

问题描述

我已将 Microsoft Office 从 2016 版更新到 2019 版。之后我的 Delphi 程序无法打开新的 Outlook 邮件窗口。该程序通过 Winapi.Mapi 使用 SimpleMapi 来启动 Outlook。

Outlook 应用程序设置为标准应用程序用于发送邮件。Windows 注册表不像以前那样包含标准中的 MAPI-Key。我尝试将以下 MAPI 密钥添加到 Windows 注册表,但没有成功。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem]
"MAPI"="1"
"MAPIX"="1"
"OLEMessaging"="1"
"CMC"="1"
"MAPIXVER"="1.0.0.1"
"CMCDLLNAME32"="mapi32.dll"

我尝试这样做的原因是 Winapi.Mapi 在 HKLM\Software\Microsoft\Windows 消息传递子系统中搜索 MAPI 密钥以加载设置的标准邮件应用程序的 MAPI32.dll。如果 Winapi.Mapi 试图加载 MAPI,则据称该 MAPI 不可用。备注:“mailto”功能工作正常。

所以我的程序适用于旧版本的 Microsoft Office(如 2016 及更早版本),但不适用于 2019 版。问题是:失败的原因是什么?注册表配置是原因还是过时的 Embarcadero 库?

我希望问题描述足够清楚。希望您能够帮助我。

标签: delphiwinapiregistrymapiregedit

解决方案


刚刚在 windows 10/office 365 下遇到了这个问题

而是将 MAPI 字符串值“1”添加到此键。

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows 消息子系统

重新启动应用程序,应该重新开始工作。


推荐阅读