Почтовая рассылка

Previous pageReturn to chapter overviewNext page

 

 Скрипт, используя 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

Сайт разработчиков Traffic Inspector