Sub Router(oMessage)
Dim i, strDir, strFile
strDir = "D:\Source Files Test\Equipment\"
For i = 0 To oMessage.Attachments.Count-1
strFile = oMessage.Attachments.item(i).Filename
oMessage.Attachments.item(i).SaveAs(strDir & strFile)
Next
End Sub
Sub OnAcceptMessage(oClient, oMessage)
'这个事件是在本服务器用户发送邮件时触发,不是接收邮件时触发,这名字取得有点迷惑。。
'功能:限制用户外发邮件附件。将需要限制外发的用户邮件地址添加至\hMailServer\Events\LimitUsers.txt
'下面定义的四个变量,其目的就是为了取得邮件后缀名,用以判断当前发邮件用户是否为本域用户
Dim fromemail, fromemail_domain, authenuser, authenuser_value
authenuser = Split((oClient.UserName), "@")
authenuser_value = authenuser(1)
fromemail = Split((oMessage.FromAddress), "@")
fromemail_domain = fromemail(1)
If oClient.UserName <> "" Then
If LCase(authenuser_value) = LCase(fromemail_domain) And LCase(fromemail_domain) <> LCase("xxxx.com") Then
'用户不是以发件者发送邮件且不是本地域名则提示没有被授权,xxxx.com即你的邮件后缀(不含“@”哦!)
Result.Value = 2
Result.Message = "You are NOT authenticated user!!"
ElseIf LCase(authenuser_value) = LCase(fromemail_domain) Then
'用户合法
Set FSO = CreateObject("Scripting.FileSystemObject")
Set txtfile = FSO.OpenTextFile("C:\Program Files (x86)\hMailServer\Events\LimitUsers.txt", 1, TriStateTrue)
'受限用户列表,不懂,先就这么用着,这个txt文件目录不要搞错了!
'下面是do...loop循环,一次读取一行直到文件结尾,依次与发件用户进行比较,匹配上则做相应权限控制,我这里是控制外发邮件附件
Do Until txtfile.AtEndOfStream
Dim strtxt
strtxt = Trim(txtfile.ReadLine)
If oClient.UserName = strtxt Then
'如果匹配上是受限邮件账号,则检查外发邮件是否含有附件?
'如果有附件,则检查发送地址是否是本域地址?
'如果非本域地址,则禁止发送附件。
If (oMessage.Attachments.Count > 0) Then
Dim i
For i = 0 To oMessage.Recipients.Count -1
If (Not oMessage.Recipients(i).IsLocalUser) Then
Result.Value = 2
Result.Message = "Don't sent attachments to outside!"
End If
Next
End If
End If
Loop
txtfile.Close
End If
End If
End Sub