Delphi: MAPILOGON ErrorCode 1
Я пробовал со многими версиями MAPISend, но я каждый раз получал ошибку в одном месте. MAPILogon возвращается с кодом ошибки 1.
dwRet := MapiLogon(Handle,
nil,
nil,
MAPI_DIALOG or MAPI_NEW_SESSION,
0, @MAPI_Session);
Я пытался с "MAPISend компонент", этот код:
http://prog.hu/tudastar/60044-6/Delphi-Email+csatolt+file+thunderbird.html
и 2 других.
Интересно, что Acrobat Reader МОЖЕТ использовать MAPI с функцией "Присоединить к электронной почте", а также работает контекстное меню "Отправить" "В почте".
Я не понимаю, почему он не работает, на моей машине (Win7) он работает нормально.
Тогда машины, на которых я потерпел неудачу, имели ОС WinXP, и они использовали Thunderbird.
Что я могу сделать, чтобы успешно войти в MAPI?
Спасибо: дд
4 ответа
Я думаю, что нашел проблему. Проблема в том, что Delphi требуется значение реестра с именем MAPI в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem". Если его нет, он посылает вам 1 код ошибки, что является причиной этой путаницы.
Это значение должно быть строкой. Сисадмин написал DWORD, и это вызвало проблему.
Спасибо за вашу помощь: dd
Я обнаружил, что вам также может потребоваться добавить строковое значение MAPI, равное 1, в двух местах:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Подсистема обмена сообщениями Windows
- HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Подсистема обмена сообщениями Windows
Последний для 32-битных приложений, работающих в 64-битной Windows:
Мне это не нужно было для использования инструментов Jedi SendMail в D2007, но оно было нужно для использования SendMail LMDTool в Delphi 10+ (вероятно, даже для Delphi XE и более поздних версий, я полагаю).
Я не уверен ни в каких специфических для Delphi проблемах, но вам не нужно вызывать MAPILogon перед вызовом MAPISendMail. Если вы это сделаете, я бы не проверял возвращаемое значение. Вот почему Acrobat Reader работал, а ваш клиент SMAPI - нет.