На сайте 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-сервер?