Оболочка CAP MAPI пытается получить адрес отправителя после входа в систему по умолчанию - PullRequest
0 голосов
/ 09 мая 2018

Я хочу получить адрес электронной почты для профиля отправителя по умолчанию в Outlook через оболочку MAPI.В течение нескольких лет я использовал оболочку MAPI от Noel Dillbough, описанную здесь https://www.codeproject.com/Articles/10881/MAPIEx-Extended-MAPI-Wrapper До недавнего времени у меня не возникало проблем с тем, что в Windows 10 / Outlook возникали проблемы с тем, что письма застревали в папке «Исходящие» и не отправлялись.Не удалось найти решение или найти обновление кода после 2009 года, поэтому я решил попробовать оболочку PJ Naughter на http://www.naughter.com/cmapi.html

. Это прекрасно работает, если вы подавляете предупреждения Outlook через описанные настройки regздесь: http://www.msoutlook.info/question/883

[Дополнительный вопрос: интересно, как оболочка Dillbough MAPI избегает этой проблемы, о чем он прямо упоминает ...

(I) напомнил острашные предупреждения безопасности Outlook.Итак, я решил заглянуть в расширенный MAPI.

]

Итак, я все начал, и он работает хорошо, но у оболочки Naughter есть одна недостающая функциональность противфантик ДиллбоуОболочка 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, как открыть почтовый ящик по умолчанию? ).

Затем я просто вызываю GetProfileEmail как функцию lpMAPISession и могу проверить адрес электронной почты как CString.Я не смог найти эквивалент в оболочке PJ Naughter

1 Ответ

0 голосов
/ 09 мая 2018

Вам нужно позвонить IMAPISession::QueryIdentity, чтобы получить текущего пользователя. Вы можете поиграть с этим в OutlookSpy - щелкните IMAPISession, затем QueryIdentity.

...