PowerShellは新しい電子メールイベントでWebサービスを呼び出します(Exchange2010)
-
26-09-2019 - |
質問
Exchange 2010があり、すべての新しい電子メールに対してWebサービスを使用してプロセスを実行してメールボックスに掲載する必要があります。このプロセスは、基本的に内部タスクリストにメールを追加します。
これにはPowerShellを使用できますか?
PowerShellを使用する前にPowerShellを使用したことはありません。
そうでない場合は、x秒ごとにメールボックスを監視する以外に、これを行う別の方法を提案できます。本当にイベントに基づいて欲しいので、新しいメールがない場合は処理がありません。
乾杯、マイク
解決
私はこれを調べて数日間費やしましたが、着信電子メールイベントにカスタムコードを追加することは非常に難しいようです。そして、それを行う方法の多くは、Exchangeが電子メールシステムを遅くしていると考えている場合に無視されます。 (http://www.outlookcode.com/article.aspx?id=62)
もう1つの方法は、動作するがハックのように感じるSMTPイベントに接続することです。そのためには、WScriptを書く必要があります。メールが到着した場合に登録してください。
以下は、SMTPを介して来るすべての電子メールにランダムHEX参照を追加するための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分ごとに新しいメールをチェックするタイマーベースのシステムを作成することです。
私が望んでいたほど滑らかではありませんが、そうするでしょう。
これが他の人に役立つことを願っています。
所属していません StackOverflow