| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как заставить работать CMC (MAPI)? |
| Автор: valent_N 8.10.2006, 12:37 | ||
| Здравствуйте! Мне нужно обеспечить моей C++-программе (MFC), разрабатываемой под MS Windows XP Home в среде MS Visual Studio 2005 Team Suite, некоторые из почтовых возможностей. Я выбрал для этого CMC (Common Messaging Calls) - программный интерфейс, базирующийся на MAPI-интерфейсе. В соответствии с документацией MSDN Library 2005 и представленными в ней образцами кодов я делаю следующую инициализацию CMC-интерфейса: 1) загрузка DLL (функция LoadLibrary); 2) выборка из DLL указателей на CMC-функции (метод GetCmcFunctionPtrs). А затем вызываю эти функции. Привожу соответствующий код из моей пробной программы (при создании проекта AppWizard'ом был помечен флажок, указывающий на использование MAPI):
Однако обе вызываемые функции (g_cmc_query_configuration_FuncPtr и g_cmc_logon_FuncPtr) не срабатывают и возвращают значение CMC_E_FAILURE. В связи с вышеизложенным, имею вопросы к тем, кто имел успешный опыт работы с CMC или MAPI: 1. Нужны ли какие-либо предварительные меры по инсталляции MAPI? (В документации об этом ничего не говорится и можно понять, что ничего делать не нужно. Как я понимаю - лишь бы были провайдеры почтовых услуг, а Mapi32.dll является обязательной компонентой ОС Windows). 2. Достаточно ли для использования CMC только загрузить Mapi32.dll и получить из нее указатели на нужные функции? 3. Что в вышеприведенном коде делается неправильно? Спасибо! |
| Автор: Dragon 8.10.2006, 12:48 |
| Сколько себя помню, MAPI всегда работало отвратительно. Ее реализация зависит от правильной установки/конфигурации Outlook Express или Microsoft Outlook (если установлено). Насколько расширенные возможности почты нужны? Вообще-то, реализация минимального SNMP с помощью сокетов занимает не более 100 строк кода. Причем кроссплатформенного кода, не зависящего от настроек среды. В некоторых случаях (в основном технических) даже не нужно получать MX записи на DNS сервере. Пример кода могу перекинуть завтра, если будет нужен. |
| Автор: valent_N 8.10.2006, 13:52 |
| Большое Спасибо за внимание к моему вопросу. Буду благодарен за присылку Вашего примера. Я не силен в сетевых протоколах, но мне казалось, что SNMP не подходит мне для моих целей. Очевидно, я ошибаюсь. Вообще говоря, моя задача такая: нужно принять почту (Именно почту! А не создать агентов, обменивающихся сообщениями в произвольном формате), посланную с судна программным обеспечением, созданным не мною, а американцами. То есть, я должен принять их правила игры. Почту я должен раздраконить по полной программе (реализовав абсолютно все почтовые протоколы, нужные для приема посланий) - сделать необходимые перекодировки (языковые и прочие), проанализировать по всем заголовкам, вытянуть все аттачменты, а затем проанализировать каждый из них, исходя из их форматов (XML, CSV, ...) и записать извлеченные из аттачментов данные в базу данных. Конечно, я мог бы прием почты и все протоколы реализовать сам своими руками. Когда-то я имел дело с SMTP и всеми другими почтовыми протоколами (тоже нужны были все они тогда) для реализации отправки почты и помню, насколько для меня это было тогда муторно. Чтобы этого избежать и сэкономить время, я решил сейчас использовать высокоуровневую поддержку почтовых возможностей, предоставляемую Microsoft'ом. Да и нет этого времени у меня сейчас. |
| Автор: Dragon 8.10.2006, 16:22 |
| Понятно, тогда имеющийся пример не подойдет. По какой-то причине я счел что приложение должно отправлять e-mail, а не принимать. Для приема тебе понадобится поддержка POP3 и IMAP Работа с аттачментами в контектсе e-mail сводится только к их приему Т.е. да, если не использовать внешние библиотеки, тебе нужно чуть ли не mail server писать... В общем, я сталкивался с MAPI около 3 лет назад и был крайне недоволен работой библиотеки. Судя по примеру кода, текущее положение вещей не сильно изменилось. На твоем месте я постарался бы найти альтернативы MAPI. |
| Автор: valent_N 8.10.2006, 20:00 |
| Спасибо! Буду прорубать и CMC/MAPI. И буду также попутно искать другие возможности. |
| Автор: VSergeyV 5.12.2007, 11:02 | ||
И что же нашли и выбрали? |