C ++ MAPI包装器尝试在默认登录后获取发件人地址

时间:2018-05-09 07:06:43

标签: c++ wrapper mapi

我想通过MAPI包装器获取Outlook中默认发件人配置文件的电子邮件地址。 多年来我一直在使用这里描述的Noel Dillbough的MAPI包装器     https://www.codeproject.com/Articles/10881/MAPIEx-Extended-MAPI-Wrapper 直到最近,当我开始在Windows 10 / Outlook中遇到一些问题时,没有问题,电子邮件卡在发件箱中而没有被发送。 无法在2009年之后看到解决方案或查找代码更新,所以我想我会尝试PJ Naughter包装器 http://www.naughter.com/cmapi.html

如果您通过此处所述的注册表设置取消Outlook警告,则此工作正常:http://www.msoutlook.info/question/883

[附带问题:想知道Dillbough MAPI包装器如何避免这个问题,这是他明确提到的......

  

(I)被提醒可怕的Outlook安全警告。所以,我决定研究扩展的MAPI。

所以我把它全部搞定了,并且效果很好,但是Naughter包装器与Dillbough包装器相比缺少一个功能。 Naughter包装器没有任何代码来检索默认的电子邮件发件人地址。 Dillbough包装器具有GetProfileName和GetProfileEmail功能,可让您在继续时轻松找出发件人的身份。 我用它进行检查,并希望将此功能添加到Naughter包装器中。

有人已经这样做了吗? 我试图将它添加到PJ Naughter包装器中,但我对MAPI的了解有限,而且我开始对包装器的内部进行过多的研究。 对其他实现的任何帮助或指示都赞赏......?

这里有更多细节: 在旧代码中,我调用了没有参数的CMAPIEx :: Login()来登录默认的Outlook配置文件(即使用空字符串作为配置文件)。 在内部,这称为......     MAPILogonEx(0,0,NULL,MAPI_LOGON_UI | MAPI_USE_DEFAULT,& lpMAPISession); (如此处所述C++ MAPI: MAPILogonEx, how to open default mail inbox?)。

然后我只需将GetProfileEmail称为lpMAPISession函数,并可以将该电子邮件地址视为CString。 我无法在PJ Naughter包装中找到一个等价物

1 个答案:

答案 0 :(得分:1)

您需要致电IMAPISession::QueryIdentity以检索当前用户。您可以在OutlookSpy中使用它 - 单击IMAPISession,然后单击QueryIdentity。