我会这样调用MapiSendMail
:
lErrorCode := MapiSendMail(0, GetModuleHandle(nil), lMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
字符串
在我的开发服务器(Win 2016)上,这将返回0
并在outlook(标准mapi客户端)中打开一条新消息。
然而,在多个客户端(Win 10 Pro,Win 11 Pro)上,lErrorCode
的值为1
。根据文档,这意味着MAPI_E_USER_ABORT
:
用户取消了其中一个对话框。未发送任何消息。
返回后直接调用SysErrorMessage(GetLastError))
普罗泽杜尔的天使并不值得。
译文:
找不到指定的过程。
我的猜测是mapi32.dll
没有正确注册或者有错误的版本。我该如何测试这个问题或找到另一种方法来解决这个问题?
1条答案
按热度按时间aurhwmvo1#
感谢@RemyLebeau的评论,我在查找
MapiLogon()
时在this stackoverflow post中找到了解决方案:我将以下注册表项设置为字符串:
字符串
现在,
MapiSendMail()
在outlook中正确打开新邮件。