Как использовать Delphi для анализа и удаления локальных сообщений MAPI messagestore в папке "Исходящие"

У меня есть стороннее приложение, которое отправляет в списки рассылки с помощью Outlook. Предполагаю, что это делается с помощью расширенного MAPI. Поскольку Outlook может зависнуть при создании большого количества сообщений, я хочу создать службу, которая читает сообщения, хранящиеся в папке «Исходящие» хранилища сообщений, отправляет электронные письма через шлюз SMTP и удаляет отправленное сообщение из папки «Исходящие». Все это нужно делать без необходимости запускать Outlook - Outlook все равно будет установлен.

Я хотел бы знать, как то, что я только что описал, можно сделать с помощью Delphi без использования каких-либо сторонних коммерческих компонентов. Я занимаюсь исследованиями много дней, но не могу найти ни одного образца кода или примеров. Хотя для простого MAPI кода достаточно. Цените любые указатели. :)


person Joshua    schedule 11.05.2012    source источник


Ответы (2)


Что вам нужно, так это автоматизация Outlook, и для этого вам нужно изучить объектную модель Outlook, как уже упоминал Дмитрий.

Документация по объектной модели Outlook доступна на MSDN: http://msdn.microsoft.com/en-us/library/aa221870(v=office.11).aspx

И это должно помочь вам начать автоматизировать Outlook из любого приложения: http://msdn.microsoft.com/en-us/library/aa209963(v=office.11).aspx Да, речь идет об автоматизации Outlook из приложения Visual Basic, но концепции те же, нет независимо от того, какую среду вы используете для автоматизации Outlook.

Также сайт Деборы Пейт, хотя кажется, что он больше не обновляется регулярно, по-прежнему содержит очень ценную информацию по автоматизации любого приложения Office из Delphi: http://www.djpate.freeserve.co.uk/Automation.htm

Далее этот вопрос поможет вам начать поиск папки исходящих сообщений: Объектная модель Outlook - обнаружение Почтовые ящики

person Marjan Venema    schedule 11.05.2012
comment
спасибо за подробный ответ. Мое решение должно работать без Outlook, работающего в фоновом режиме. Мне удалось найти расширенный код MAPI на этом веб-сайте - evocorp.com/Delphi/ADDExtendedMapi.htm Однако, хотя он может перечислять сообщения в папке «Исходящие», я не могу удалять сообщения из папки «Исходящие». Однако он мог удалять сообщения из папки «Входящие». - person Joshua; 15.05.2012

Outlook отправляет сообщения асинхронно, поэтому я предполагаю, что проблема заключается в том, что приложение стороннего производителя генерирует сообщения с использованием объектной модели Outlook (что происходит в основном потоке Outlook). После отправки сообщения они будут отправляться асинхронно.

person Dmitry Streblechenko    schedule 11.05.2012
comment
благодаря. Стороннее приложение может создавать сообщения даже без запущенного Outlook. Так работает ли объектная модель Outlook? - person Joshua; 15.05.2012