|
环境:1台Exchange有2个SMTP VS.SMTP VS-1:监听25端口,外连26端口,SMTP VS-2:监听26端口,外连25端口.(由于各分公司都设置了监听26端口,所以不存在通信问题,在此也不讨论SMTP通信)
需求:发往各分公司(香港,深圳)时没有免责声明,其余所有对外邮件要有免责声明.
操作:1.将以下代码粘贴到一个新的文件中并将其另存为 EventSinkScript.vbs
<SCRIPT LANGUAGE="VBScript">
Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus) TextDisclaimer = vbCrLf & "DISCLAIMER:" & vbCrLf & "Sample Disclaimer added in a VBScript." HTMLDisclaimer = "<p></p><p>DISCLAIMER:<br>Sample Disclaimer added in a VBScript." If Msg.HTMLBody <> "" Then 'Search for the "</body>" tag and insert our discliamer before that tag. pos = InStr(1, Msg.HTMLBody, "</body>", vbTextCompare) szPartI = Left(Msg.HTMLBody, pos - 1) szPartII = Right(Msg.HTMLBody, Len(Msg.HTMLBody) - (pos - 1)) Msg.HTMLBody = szPartI + HTMLDisclaimer + szPartII End If If Msg.TextBody <> "" Then Msg.TextBody = Msg.TextBody & vbCrLf & TextDisclaimer & vbCrLf End If 'Commit the content changes to the transport ADO Stream object. Msg.DataSource.Save ' Commit the changes into the transport Stream pEventStatus = cdoRunNextSink End Sub </SCRIPT> 2.安装Exchange SDK,在命令行导航到C:\Program files\Exchange SDK\SDK\Support\CDO\Scripts
3.输入命令:cscript smtpreg.vbs /add 2(说明:2为SMTP VS-2) onarrival SMTPScriptingHost CDO.SS_SMTPOnArrivalSink “mail from=*@your-domain-here.com”
cscript smtpreg.vbs /setprop 2(同上) onarrival SMTPScriptingHost Sink ScriptName “C:\EventSinkScript.vbs”(说明:假设放在C盘)
如要取消:cscript smtpreg.vbs /remove 2(同上) OnArrival SMTPScriptingHost 总结:至此,完成了所要达到的需求,简单讲来就是把各分公司之间的邮件和其他对外邮件分2个SMTP VS,这样只需要对SMTP VS-2(对外邮件)注册此事件来触发添加免责声明,而不会影响各分公司之间的邮件传递. 注意:由于MAPI客户发送的邮件格式不是真正的SMTP格式,所以不适用MAPI客户.如果MAPI客户需要使用免责声明,可以建立一个SMTP网关,在SMTP网关注册添加免责声明事件,所有经过此SMTP网关的外发邮件都将触发此事件,这样将能使MAPI客户也能实现此功能.
[ 本帖最后由 leon19821015 于 2006-10-20 22:31 编辑 ] |