Почтовая рассылка |
|
Скрипт, используя API интерфейс программы Traffic Inspector, производит рассылку данных тарификации и статистики клиентам по адресам электронной почты.
Рассылка может быть реализована либо по всем пользователям, либо по определенной группе пользователей.
Для организации рассылки необходимо задать адреса электронной почты, по которым будет производится рассылка в поле E-Mail (закладка Авторизация свойств клиентов). Если адрес не указывать, рассылка данному клиенту производится не будет.
Далее настраиваем параметры рассылки. Для этого открываем файл MailSend1.vbs в любом текстовом редакторе. Там надо (см. комментарии в тексте скрипта):
1. | Вписать Ваш почтовый SMTP сервер. |
2. | Указать адрес отправителя. |
3. | Указать тему сообщения. |
Скрипт запускается из командной строки в каталоге scripts.
cscript.exe MailSend1.vbs APIPassword ObjectID /sn:ServerName
Здесь
APIPassword - пароль доступа.
ObjectID - необязательный параметр - имя группы в пределах которой производится рассылка, если данный параметр не задан, то рассылка производится всем пользователям.
ServerName - имя сервера - необязательный параметр - задается при запуске скрипта с удаленного компьютера.
Dim Mess, Conf
On Error Resume Next
WScript.Echo "---------------Выполнено: " & Date & " " & Time & "----------------------------"
Set Args = WScript.Arguments.Unnamed
If Args.Count < 1 Then
WScript.Echo "??? usage: cscript.exe mailsend.vbs APIPassword ObjectID /sn:ServerName"
WScript.Quit
End If
APIPass = Args(0)
ObjType = 3 'Пользователи
If Args.Count >= 2 Then
ObjID = Args(1)
End If
If WScript.Arguments.Named.Exists("sn") Then
ServName = WScript.Arguments.Named.Item("sn")
Set Srv = CreateObject("TrafInsp.TrafInspAdmin", ServName)
Else
Set Srv = CreateObject("TrafInsp.TrafInspAdmin")
End If
Srv.APILogon(APIPass)
BillData = Srv.ApiGetBillProp(ObjType, ObjID)
If Not IsArray(BillData) Then
WScript.Echo "Данные отсутствуют"
WScript.Quit
End If
Set Mess = CreateObject("CDO.Message")
Set Conf = Mess.Configuration.Fields
With Conf
'Впишите Ваш почтовый SMTP сервер - IP адрес или имя хоста
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.1.1.10"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Update
End With
With Mess.BodyPart
.CharSet = "koi8-r"
.ContentTransferEncoding = "8bit"
End With
'Укажите адрес отправителя
Mess.From = "tarif@send.ru"
'Укажите тему сообщения
Mess.Subject = "Ваш трафик"
Dim MasAtr(2)
MasAtr(0) = 9 'User_Email
MasAtr(1) = 8 'User_GroupName
For I = 0 To UBound(BillData, 1)
Data = BillData(I)
ClientID = Data(0)
AttribData = Srv.ApiGetAttr(ObjType, ClientID, MasAtr)
MailTo = Trim(AttribData(0))
ClientGroup = AttribData(1)
If Len(MailTo) > 0 Then
Mess.To = MailTo
StateData = Srv.ApiGetUserState(ClientID)
Select Case Data(4)
Case 0 TrMethod = "входящий"
Case 1 TrMethod = "исходящий"
Case 2 TrMethod = "сумма входящего и исходящего"
Case 3 TrMethod = "максимальное значение входящего и исходящего"
End Select
Tariffing = Space(22) & "ТАРИФИКАЦИЯ" & Chr(13) &_
Space(10) & "Тип учета трафика: " & TrMethod & Chr(13) &_
Space(6) & "Предоплаченный трафик: " & Round(StateData(6), 2) & Chr(13) &_
Space(13) & "Цена за трафик: " & Round(StateData(5), 2) & Chr(13) &_
Space(18) & "начислено: " & Round(StateData(17), 2) & Chr(13) &_
Space(10) & "Абонентская плата: " & Round(StateData(7), 2) & Chr(13) &_
Space(18) & "начислено: " & Round(StateData(18), 2) & Chr(13) &_
Space(12) & "Итого начислено: " & Round(StateData(17)+StateData(18), 2) & Chr(13) &_
Space(19) & "Оплачено: " & Round(StateData(8), 2) & Chr(13) &_
Space(21) & "Баланс: " & Round(StateData(19), 2) & Chr(13)
Statistics = Space(23) & "СТАТИСТИКА" & Chr(13) &_
Space(14) & "Принято, байт: " & StateData(20) & Chr(13) &_
Space(13) & "Передано, байт: " & StateData(21) & Chr(13) &_
"Загружено через HTTP прокси: " & StateData(29) & Chr(13) &_
Space(12) & "Считано из кэша: " & StateData(22) & Chr(13) &_
Space(2) & "Принято почтового трафика: " & StateData(23)
Mess.TextBody = Tariffing & Chr(13) & Chr(13) & Statistics
Mess.Send()
If Err.Number <> 0 Then
ErrN = Err.Number
WScript.Echo "ВНИМАНИЕ! Ошибка исполнения № " & ErrN & "!!!"
WScript.Echo " => " & Err.Description
Err.Clear
WScript.Quit(ErrN)
End If
WScript.Echo "Клиенту " & ClientID & " группы " & ClientGroup & " отправлено сообщение на e-mail: " & MailTo
Else
WScript.Echo "Клиенту " & ClientID & " группы " & ClientGroup & " сообщение не отправлено - отсутствует e-mail"
End If
Next
Set Conf = Nothing
Set Mess = Nothing
Текущая страница справки: help.smart-soft.ru/index.html?apidemomailsend1.htm