我有一些代码使用 Windows 上的默认电子邮件客户端发送电子邮件。
如果是 Outlook,我将使用“Outlook.Application”ole 对象,否则我将回退到 MAPI。这已经在多个站点使用了几年,但现在它不适用于新客户。
/* Pseudocode Delphi */
client = HKEY_CURRENT_USER\Software\Clients\Mail
if client='' then client=HKEY_LOCAL_MACHINE\Software\Clients\Mail
if pos('Outlook',client)>0 then useoutlook:=true;
if useoutlook then OutApp:=CreateOleObject('Outlook.Application');
else UseMapi
使用 Win 10 和 Outlook 2016 MSO (16.0.11901.20070) 32 位的这种方法存在两个问题
- 从注册表读取的返回是 PackagedMail ...我不知道这是什么,也找不到任何关于它的信息。
- Outlook.Application 不包含在注册的类中
- MAPI 返回 MAPI 000001 不正确的函数错误
我在网上找到了一些线索,表明 Outlook 中的 MAPI 依赖于 Outlook.Application OLE。
我只需要知道如何强制它安装 OLE 类,或者为 MAPI 正确注册它,或者知道它是否不再受支持,我需要找到不同的解决方案。
我要做的就是发送一封带有 pdf 附件的电子邮件。我发现 Outlook 的 MAPI 支持似乎有点不稳定,我最好使用 OLE,但如果它不再受支持或需要额外的步骤,我需要知道。
如果有人对 PackagedMail 有任何详细信息,那将是一个奖励。