砸锅卖铁 发表于 2006-10-20 16:03:34

2个SMTP虚拟服务器环境下添加免责声明

环境: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 = cdoRunNextSinkEnd 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客户也能实现此功能.相关资料:http://support.microsoft.com/kb/317680/zh-cn

[ 本帖最后由 leon19821015 于 2006-10-20 22:31 编辑 ]

feidong 发表于 2006-10-25 08:48:20

我按介绍的方法却无法实现,请问有没有特别需要注意的地方?
页: [1]
查看完整版本: 2个SMTP虚拟服务器环境下添加免责声明