Как да използвате Delphi за анализиране и изтриване на съобщения от локалното хранилище за съобщения MAPI в изходящата кутия

Имам приложение на трета страна, което изпраща до списъци за разпространение с помощта на Outlook. Предполагам, че това се прави с помощта на разширен MAPI. Тъй като Outlook може да увисне, ако се генерират голям брой съобщения, искам да създам услуга, която чете съобщенията, съхранени в изходящата кутия на MessageStore, да изпраща имейлите през 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