使用Outlook 2016:MAPISendMail在Windows应用程序中失败并返回“MAPI_E_FAILURE”作为错误代码

时间:2017-03-08 12:00:31

标签: c++ mfc outlook-2016

我正在尝试使用c ++应用程序发送电子邮件,我首先加载了MAPI32.dll,然后尝试访问MAPISendMail并传递必要的参数。当我尝试执行此步骤时,它会抛出异常“访问冲突...”。当我单击继续时,它会抛出“MAPI_E_FAILURE”作为错误代码。但是同样的代码可以很好地适用于Windows 7和Outlook 2013环境。

我正在使用的环境是Windows 10和Outlook 2016,此操作系统中存在Outlook 2016的问题。

我已将此链接作为参考:MAPISendMail_Expert

我无法找出究竟是什么问题。如果任何人能帮助我,那将是非常值得注意的。

2 个答案:

答案 0 :(得分:0)

我发现了导致问题的原因,这是因为我启动的c ++应用程序正在运行admin privileges,并且后台运行的Outlook以non-admin权限启动。

然后我以管理模式启动了我的Outlook(“以管理员身份运行”),并从我的c ++应用程序发送了一封电子邮件并成功完成了。

简而言之,应该以相同的权限启动应用程序,即以non-admin运行应用程序或以administrator运行它们(C ++ app& outlook)。

答案 1 :(得分:-1)

我也遇到过这个问题,经过测试,我发现你应该设置

_T("SMTP:") + recipient.m_strAddress

https://msdn.microsoft.com/en-us/library/windows/desktop/dd296720(v=vs.85).aspx,注意lpszAddress, 格式为FAX:206-555-1212SMTP:M@X.COM,我已通过这种方式解决了这个问题。