Удаление входящих писем в MS Exchange на примере C #

Целью одного из наших проектов был обработчик MS Exchange для обработки входящих сообщений электронной почты.

Основным источником знаний была статья Логу Кришнана «Разработка управляемых приемников / ловушек для Exchange Server Store с использованием C #», опубликованная на [http://www.codeproject.com/csharp/CsManagedEventSinksHooks.asp]а также примеры из Microsoft Exchange SDK.

Мы использовали синхронные события и создали обработчик, который запускается при событии OnSyncSave. Оператор создает запись активности в Microsoft CRM, а затем удаляет сообщение из базы данных Exchange перед фиксацией:

public void OnSyncSave (IExStoreEventInfo pEventInfo, string bstrURLItem, int IFlags) {

пытаться {

if (IFlags == ((int) EVT_SINK_FLAGS.EVT_SYNC_COMMITTED + (int) EVT_SINK_FLAGS.EVT_IS_DELIVERED)) {

ProcessMessage (pEventInfo, bstrURLItem, IFlags);

}

}

catch (Exception ex) {

log.Debug (например, Message + » n» + ex.StackTrace);

}

В заключение {

LogManager.Shutdown ();

}

}

При отладке обработчиков Exchange чрезвычайно удобно использовать log4net в RollingLogFileAppender или RemoteAppender (для нескольких экземпляров объектов COM +). Вы можете прочитать об этом здесь http://logging.apache.org/log4net/

Чтобы включить обработку входящей почты, необходимо предоставить пользователю соответствующие разрешения, с какой учетной записи приложение COM + запускает обработчик. Это права на изменение информации в почтовых ящиках пользователей, для которых они зарегистрированы (Windows 2003 Server: Active Directory Users and Computer -> Users -> Properties (для учетной записи приложения COM +) -> Exchange Advanced -> Mailbox rights) . А теперь код:

private void DeleteMessage (строка bstrURLItem) {

пытаться {

ADODB.Connection oCn = новый ADODB.Connection ();

oCn.Provider = «exoledb.datasource»;

oCn.Open (bstrURLItem, «», «», -1);

if (oCn.State == 1) {

log.Debug («Хорошее соединение»);

}

else {

log.Debug («Плохое соединение»);

}

ADODB.Record rec = новый ADODB.Record ();

rec.Open (bstrURLItem, oCn,

ADODB.ConnectModeEnum.adModeReadWrite,

ADODB.RecordCreateOptionsEnum.adFailIfNotExists,

ADODB.RecordOpenOptionsEnum.adOpenSource,

«», «»);

rec.DeleteRecord (bstrURLItem, ложь);

rec.Close ();

oCn.Close ();

rec = null;

oCn = ноль;

}

catch (Exception ex) {

log.Debug (например, Message + » n» + ex.StackTrace);

}

}

Удачной настройки!

Борис Макушкин

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие записи

Найдите международного курьера для своевременной доставкиНайдите международного курьера для своевременной доставки

Международные курьерские компании могут предложить людям по всему миру возможность гарантировать, что их важные посылки и срочные документы будут доставлены в нужное место вовремя и в том же состоянии, в

Факторы, которые следует учитывать при выборе правильного поставщика ИТ-услуг? Давайте упростим этоФакторы, которые следует учитывать при выборе правильного поставщика ИТ-услуг? Давайте упростим это

Основная цель после этой статьи — помочь новым предпринимателям, развивающимся предприятиям и малым и средним предприятиям, не знакомым с ИТ-технологиями, выбрать правильного ИТ-партнера для получения желаемого решения для повышения производительности,

Услуги по обработке с ЧПУ: введение и преимуществаУслуги по обработке с ЧПУ: введение и преимущества

Если вы находитесь на этой странице, вероятно, вас интересует обработка с ЧПУ. Сегодня существует множество поставщиков услуг. Так что выбор, основанный на потребностях вашего бизнеса, может быть не таким простым.