これについて数日かけて調査しましたが、受信メール イベントにカスタム コードを追加するのは非常に難しいようです。また、Exchange が電子メール システムの速度を低下させていると判断した場合、その方法の多くは無視されます。( http://www.outlookcode.com/article.aspx?id=62 )
もう 1 つの方法は、SMTP イベントにフックすることです。これは機能しますが、少しハックされているように感じます。そのためには、wscript を作成し、それをメールの到着イベントに対して登録する必要があります。
以下は、SMTP 経由で届くすべての電子メールにランダムな 16 進参照を追加する vb スクリプトの例です。
<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 分ごとに新しいメールをチェックするタイマー ベースのシステムを作成することです。
私が望んでいたほど滑らかではありませんが、それはうまくいきます.
これが他の人に役立つことを願っています。