Возвращается домой в хлам пьяный программист. По пути заглядывает в почтовый ящик и обнаруживает там письмо. Прочитав его, на обороте пишет ответ, и запечатав письмо кладет обратно в свой ящик. Утром, идя на работу в том же состоянии, опять заглядывает в почтовый ящик и обнаруживает вчерашнее письмо.
- Блин, я же ставил не сохранять отправленные письма.
uses Mapi;
...
procedure TfrmMain.btnOpenAddressBookClick(Sender: TObject);
var
lhSession, rc: Cardinal;
lpnNewRecips: PULONG;
lppNewRecips: PMapiRecipDesc;
lpRecips: MapiRecipDesc;
begin
lpnNewRecips := nil;
rc := MAPILogon(0, 'Севостьянов Игорь', '', MAPI_LOGON_UI, 0, @lhSession);
if (rc < > SUCCESS_SUCCESS) then
SysErrorMessage(rc);
rc := MAPIAddress(lhSession, 0, 'Адресная книга', 0, '', 0, lpRecips, 0, 0,
lpnNewRecips, lppNewRecips);
if (rc < > SUCCESS_SUCCESS) then
SysErrorMessage(rc)
else
rc := MAPIFreeBuffer(lppNewRecips); // free the memory used by MAPIAddressif (rc < > SUCCESS_SUCCESS) then
SysErrorMessage(rc);
rc := MAPILogoff(lhSession, 0, 0, 0);
if (rc < > SUCCESS_SUCCESS) then
SysErrorMessage(rc);
end;
Есть еще и в Deplhi Help C:\Program Files\Common Files\Borland Shared\MSHelp\mapi.hlp
Привет! Я переведу текст на русский язык:
Это фрагмент кода на Delphi, который предназначен для загрузки адресной книги с помощью библиотеки Microsoft Exchange MAPI (Messaging Application Programming Interface).
Вот разбивка того, что код делает:
Функция MAPILogon вызывается с следующими параметрами:
0: Пустая строка как имя профиля.
'Севостьянов Игорь': Имя пользователя, которое может быть жестко закодировано или получено из ввода пользователя.
'': Пустая строка для пароля.
MAPI_LOGON_UI: Флаг, указывающий, что логон должен использовать UI (пользовательский интерфейс) для запроса учетных данных.
0: Нет дополнительных параметров.
@lhSession: Указатель на переменную, которая будет хранить.handle сеанса.
Код проверяет успешность логона, сравнивая возвращаемое значение функции MAPILogon с SUCCESS_SUCCESS. Если это не так, он отображает сообщение об ошибке с помощью SysErrorMessage.
Функция MAPIAddress вызывается с следующими параметрами:
lhSession: Handle сеанса, полученный из MAPILogon.
0: Нет дополнительных параметров.
'Адресная книга': Жестко закодированная строка, представляющая имя адресной книги.
0: Нет дополнительных параметров.
'': Пустая строка для электронной почты получателя.
0: Нет дополнительных параметров.
lpRecips: Указатель на переменную, которая будет хранить информацию о адресной книге.
0: Нет дополнительных параметров.
Код проверяет успешность функции MAPIAddress, сравнивая ее возвращаемое значение с SUCCESS_SUCCESS. Если это не так, он отображает сообщение об ошибке с помощью SysErrorMessage.
Если функция MAPIAddress была успешной, код освобождает память, используемую информацией о адресной книге, с помощью MAPIFreeBuffer.
Код выходит из сеанса MAPI с помощью MAPILogoff.
Цель этого фрагмента кода seems to be загрузка адресной книги пользователя и отображение ее содержимого. Однако неясно, какие конкретные действия планируются выполнять с загруженной информацией.
Некоторые предложения по улучшению:
Рассмотрите добавление обработки ошибок для случаев, когда логон или загрузка адресной книги fails.
Вместо жесткого закодирования имени пользователя и имени адресной книги рассмотрите использование параметров ввода или извлечения их из конфигурационного файла или базы данных.
Рассмотрите реализацию более robust способа управления памятью, например, с помощью smart pointers или встроенных функций памяти Delphi.
Также стоит отметить, что MAPI является старой технологией, и новые версии Microsoft Exchange могут не поддерживать ее. Кроме того, фрагмент кода appears to be written for Delphi 5 or earlier, which has compatibility issues with modern Windows versions.
В статье описывается процесс загрузки адресной книги с помощью технологии MAPI (Messaging Application Programming Interface) на языке программирования Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.