-
В XE2 решил набросать задачку: получить письма через Mapi.
uses
Winapi.Mapi;
hSession := MapiLogOn(hSession, PAnsiChar(FUsername), PAnsiChar(FPassword),
MAPI_LOGON_UI or MAPI_NEW_SESSION, 0, @MapiSession);
hResult := MapiFindNext(MapiSession, 0, Nil, Nil, MAPI_LONG_MSGID OR
MAPI_GUARANTEE_FIFO, 0, AMessageId); после последнего действия hResult стабильно возвращает MAPI_E_FAILURE, SysErrorMessage говорит "The system cannot find the file specified". Мне эта ошибка ни о чем не говорит. Что он имеет в виду?
-
> SysErrorMessage
А где в MAPI написано что код детализации ошибки MAPI_E_FAILURE лежит в GetLastError ?
Смотрю в док-цию и в упор не вижу ..
> hSession := MapiLogOn(hSession, PAnsiChar(FUsername), PAnsiChar(FPassword),
а пременные FUsername и FPassword у тебя поди String. если так то ты попросту не залогинился.
-
> А где в MAPI написано что код детализации ошибки MAPI_E_FAILURE > лежит в GetLastError
Ошибся.
> ты попросту не залогинился
MapiLogOn возвращает SUCCESS_SUCCESS
-
> MapiLogOn возвращает SUCCESS_SUCCESS
ну если D7, то неудивительно.. Засада будет при переходе на юникодовые версии
Хотя SUCCESS_SUCCESS - это вовсе не hSession, а код завершения, не имеющий к хендлу прямого отношения.
Значит какие-то иные параметры вызова MapiFindNext некорректны.
-
Что-то вы меня совсем запутали. Во время тестирования авторизация идет без имени и пароля. Все настроено корректно, это проверено другими способами. Авторизация возможна. > Хотя SUCCESS_SUCCESS - это вовсе не hSession, а код завершения, > не имеющий к хендлу прямого отношения
Цитирую с MSDN: Return value This function returns one of the following values. SUCCESS_SUCCESS The call succeeded and a Simple MAPI session was established. С соединением, таким образом, вопросов нет. Проблема, как я понимаю, в MapiFindNext. > Значит какие-то иные параметры вызова MapiFindNext некорректны
Может, вы сможете подсказать какие параметры могут быть некорректны? Я не могу понять, в чем можно ошибиться в этой строке hResult := MapiFindNext(MapiSession, 0, Nil, Nil, MAPI_LONG_MSGID OR MAPI_GUARANTEE_FIFO, 0, AMessageId); Может есть какой-нибудь рабочий пример поиска писем? В интернете нахожу только отправку, на MSDN тоже ничего не вижу
-
> С соединением, таким образом, вопросов нет
Да я не говорю что там вопросы) Просто у тебя переменная, куда пишется результат MapiLogOn, имеет несуразное ее смыслу имя - hSession, в то время как имя переменной, куда ты сохраняешь результат вызова MapiFindNext, вполне адекватно.
-
-
-
Ну вот по отправке материалов куча. А вот с получением как-то скудновато. Или я так ищу
|