quinta-feira, 18 de outubro de 2012
Removendo-mail de entrada no MS Exchange, C # Exemplo
O objetivo de um de nossos projetos foi manipulador MS Exchange para o processamento de e-mail de entrada.
A fonte básica de conhecimento era este artigo "Desenvolvimento de Coletores de eventos gerenciados / Ganchos para o Exchange Server usando loja C #" por Logu Krishnan, publicado para o endereço [http://www.codeproject.com/csharp/CsManagedEventSinksHooks.asp], e também exemplos de Microsoft Exchange SDK.
Utilizamos eventos síncronos e criou o manipulador, que é acionado em caso OnSyncSave. O manipulador cria registro de atividade no Microsoft CRM e, em seguida, remove a mensagem no banco de dados do Exchange antes do compromisso:
public void OnSyncSave (IExStoreEventInfo pEventInfo, string bstrURLItem, iFlags int) {
try {
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 (ex.Message + "\ n" ex.StackTrace +);
}
finally {
LogManager.Shutdown ();
}
}
Para depuração manipuladores de câmbio - é o conveniente extremamente usar log4net sistema em RollingLogFileAppender ou RemoteAppender modos (por exemplo múltiplo de objetos COM +). Você pode ler mais sobre este assunto aqui http://logging.apache.org/log4net/
Para que a remoção de correio manipulador de entrada, é necessário dar direitos apropriados para o usuário, em que conta a aplicação COM + executa o manipulador. Estes são direitos sobre a mudança da informação em caixas de utilizador para quem está registrado (Windows Server 2003: Active Directory Usuários e Computadores -> Usuários -> Propriedades (por conta de aplicação COM +) -> Exchange avançadas -> Direitos caixa de correio ). E agora o código:
private void DeleteMessage (string bstrURLItem) {
try {
ADODB.Connection OCN = ADODB.Connection nova ();
oCn.Provider = "exoledb.datasource";
oCn.Open (bstrURLItem, "", "", -1);
if (oCn.State == 1) {
log.Debug ("Conexão bom");
}
else {
log.Debug ("Bad Connection");
}
ADODB.Record rec = new ADODB.Record ();
rec.Open (bstrURLItem, OCN,
ADODB.ConnectModeEnum.adModeReadWrite,
ADODB.RecordCreateOptionsEnum.adFailIfNotExists,
ADODB.RecordOpenOptionsEnum.adOpenSource,
"", "");
rec.DeleteRecord (bstrURLItem, false);
rec.Close ();
oCn.Close ();
rec = null;
OCN = null;
}
catch (Exception ex) {
log.Debug (ex.Message + "\ n" ex.StackTrace +);
}
}
Feliz de personalização!
Boris Makushkin...
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário