Страница 1 из 1

Event Sink в Exchange 2003

СообщениеДобавлено: 28.07.2006 (Пт) 14:41
Ruslan Demidow
Запарился уже экспериментировать с сабжем.
На сайте MS четко прописано как повесить обработчик на событие отправки. Повесил. Если в обработчике событий делать вывод просто в текстовик данных сообщения - то отрабатывает, но из 20 раз срабатывает 1-2 раза.
Если же делать отправку копии письма на определённый ящик - то вообще тогда идёт циклическое возрастание отправляемых писем и сервак ложится.
Отправляется оригинал. В обработчике события создаётся сообщение на другой адрес с данными оригинала. Новое сообщение отправляется. На это новое событие срабатывает опять обработчик. И опять по новой. В итоге за 15 минут очередь сервака забивается до краёв (до 8 000 сообщений) и приходится отключать сервак и убивать очередь сообщений.
Подскажите плиз, кто-нибудь, кто делал уже обработчики событий.

Скрипт, который вешается на событие onarrival SMTPMessCheck CDO.SS_SMTPOnArrivalSink прилагаю.

Заранее спасибо за помощь, други.

Код: Выделить всё

<SCRIPT LANGUAGE="VBScript">

Sub IEventIsCacheable_IsCacheable()
   'To implement the interface, and return S_OK implicitly
End Sub


Sub ISMTPOnArrival_OnArrival(ByVal objMessage, EventStatus)

   ' Initialize error checking
   On Error Resume Next

   ' Declare variables
   Dim strSender      ' As String
   Dim StrRecipient    ' As String
   Dim objFields      ' As ADODB.Fields
   Dim objEmail      
   Dim FSO, txt, Shell, oAttach, colAttach
   
   
   Set objFields = objMessage.EnvelopeFields'
   With objFields
      If instr(1,objMessage.From,"sekretariat@zz.local")>0 then
      'objmessage.BCC="rd@zz.local"
      'objmessage.datasource.save
      'set colAttach=   objMessage.Attachments
      'set fso=createobject("Scripting.FileSystemObject")
      'set txt=fso.createtextfile("C:\test.txt",true)
      'txt.writeline(objMessage.From)
      'txt.writeline(objMessage.To)
      'txt.writeline(objMessage.Subject)
      'txt.writeline(objMessage.TextBody)
      'txt.WriteLine("Вложения: ")
      'For Each oattach in colAttach
      '   txt.WriteLine(oAttach.filename)
      'next
      'txt.close
      
      'Set txt=Nothing
      'Set FSO=nothing
      Set objEmail = CreateObject("CDO.Message")'
      objEmail.From = "postmaster@zz.local"
      objEmail.To = "rd@zz.local"
      objEmail.Subject ="FORWARD: " & objmessage.subject
      objEmail.Textbody = objmessage.textbody
      set objemail.Attachments=objMessage.Attachments
      For Each oAttach In colAttach
         objEmail.AddAttachment oAttach
      next
      objEmail.Send
      Set objEmail= nothing
      End if
   End With
   Set objFields = Nothing

End Sub

</SCRIPT>


И может быть подскажет, кто-нибудь в каком порядке идёт применение правил обработки событий. Нужно ли каждый раз после изменения скрипта заново регистрировать обработчик событий и рестартовать виртуальный SMTP-сервер?

СообщениеДобавлено: 31.07.2006 (Пн) 23:47
Ruslan Demidow
В общем по поводу наплыва сообщений разобрался.
Но вот форвард сообщений приходит четыре раза с каждого оригинала. (Два smtp сервера, одно хранилище).
Плюс вместо аттача - идёт файлик *.dat размером в несколько сотен байт.
Может быть хоть с этим кто-то поможет?

хотя и не надеюсь уже... :(

СообщениеДобавлено: 01.08.2006 (Вт) 8:06
Sebas
Добавляй хидеры в сообщение перед отправкой, а привходе проверяй наличие хидера, если есть, то выскакивай... из процедуры.

СообщениеДобавлено: 01.08.2006 (Вт) 11:38
Ruslan Demidow
Sebas писал(а):Добавляй хидеры в сообщение перед отправкой, а привходе проверяй наличие хидера, если есть, то выскакивай... из процедуры.

Ок. Спасибо.
Попробую так.

СообщениеДобавлено: 02.08.2006 (Ср) 9:48
Sebas
также можно получать поток и сохранять в пикапе другого смтп сервера в котором твой синк не зареген. Ну это через одно место. Хтя в некоторых ситуациях очень удобно....

СообщениеДобавлено: 02.08.2006 (Ср) 13:02
Sebas
Да, вот, вопросец тож есть:
Если письмо приходит не через SMTP (ну, например, Через офисный оутлук с эксчендж аккаутом), то оно в этот приёмник не попадает.
Какой интерфейс использовать для обработки всехсообщений проходящих через Exchange&?

СообщениеДобавлено: 02.08.2006 (Ср) 17:24
Ruslan Demidow
Sebas писал(а):Да, вот, вопросец тож есть:
Если письмо приходит не через SMTP (ну, например, Через офисный оутлук с эксчендж аккаутом), то оно в этот приёмник не попадает.
Какой интерфейс использовать для обработки всехсообщений проходящих через Exchange&?

Так ведь у меня именно такая ситуация: подразумевалась внутрикорпоративная почта. Все пользователи подключены к Exchange-серверу. И именно сообщения на Exchange-сервере должны проходить через мой EventSink. Или ты имел ввиду что-то другое?

СообщениеДобавлено: 31.08.2006 (Чт) 8:16
Sebas
Вдумайся в название интерфейса

ISMTPOnArrival,

SMTP!!!!!!!

Если у тебя оутлук подключается не через POP3 аккаунт, а как Exchange account. То при отсылки писем в эти синки ничего не попадёт. Так как SMTP тут не причём....

СообщениеДобавлено: 01.09.2006 (Пт) 18:26
Ruslan Demidow
Sebas писал(а):Вдумайся в название интерфейса

ISMTPOnArrival,

SMTP!!!!!!!

Если у тебя оутлук подключается не через POP3 аккаунт, а как Exchange account. То при отсылки писем в эти синки ничего не попадёт. Так как SMTP тут не причём....

Хм. Не думал...
Проверю в понедельник.