Я потратил несколько дней на изучение этого вопроса, и кажется, что очень трудно добавить пользовательский код для входящего события электронной почты. И многие из способов сделать это будут просто проигнорированы, если Exchange думает, что это замедляет работу системы электронной почты. (http://www.outlookcode.com/article.aspx?id=62)
Другой метод заключается в подключении к событиям SMTP, которые работают, но чувствуют себя немного взломанными. Для этого вам нужно написать wscript, а затем зарегистрировать его на случай получения электронного письма.
Вот пример сценария vb для добавления случайной шестнадцатеричной ссылки на каждое письмо, которое приходит через SMTP.
<SCRIPT LANGUAGE="VBScript">
Sub IEventIsCacheable_IsCacheable()
'To implement the interface, and return S_OK implicitly
End Sub
Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus)
Dim Flds
randomize()
set Flds = Msg.Fields
With Flds
strSubject = .Item("urn:schemas:httpmail:subject")
if instr(strSubject, "Ref=") = 0 then
strSubject = Replace(strSubject, CHR(9), "") & " (Ref=" & hex(replace(timer(), ".", "")) & hex(rnd()) & ")"
.Item("urn:schemas:httpmail:subject") = strSubject
.Update
else
strSubject = LEFT(strSubject, instr(strSubject, "(Ref=") - 1) & MID(strSubject, instr(instr(strsubject, "(Ref="), strSubject, ")") + 1, Len(strSubject)) & " (Ref=" & hex(replace(timer(), ".", "")) & hex(rnd()) & ")"
.Item("urn:schemas:httpmail:subject") = strSubject
.Update
end if
End With
Msg.Datasource.Save
EventStatus = 0 'Run next sink
End Sub
</SCRIPT>
Затем, чтобы зарегистрировать скрипт, запустите его.
Cscript smtpreg.vbs /add 1 onarrival SMTPAddRef CDO.SS_SMTPOnArrivalSink "mail from=*"
Cscript smtpreg.vbs /setprop 1 onarrival SMTPAddRef Sink ScriptName "C:\ENTERPATH\SMTPRef.vbs"
Чтобы отменить регистрацию скрипта, выполните следующее;
cscript smtpreg.vbs /remove 1 onarrival SMTPAddRef
Наиболее устойчивым методом, по-видимому, является создание системы на основе таймера для проверки новых писем каждые X минут.
Не так гладко, как я надеялся, но подойдет.
Надеюсь, это поможет другим.