Уважаемые друзья, форма вопрос - ответ снова в строю!

Powershell отправка SMS сообщений

Powershell отправка SMS сообщений

Как вы понимаете сам по себе Powershell не может отправлять SMS сообщения. Для этого нужен аппаратный GSM шлюз или сторонний сервис в интернете по отправке SMS. GSM шлюз не дешёвое удовольствие и служит для большого спектра задач нежели просто отправлять SMS. А так как нам нужно попросту отправить SMS сообщение, то будем использовать специальный сервис в интернете по отправки таких сообщений. Я для своего примера использовал сервис отправки SMS сообщений от SMS.RU. Данный сервис имеет богатый API и реализован на многих платформах.

  • PHP
  • Python
  • Lua
  • Java
  • .NET
  • 1C: УТ 11, УТ 10.3, ТиС 7.7, БП 3.0
  • Yii1
  • Yii2
  • Node.js

Чтобы начать отправлять SMS сообщения вам нужно зарегистрироваться, подтвердить свой номер мобильного телефона. Далее вы получаете свой персональный ключ для работы с API. Ключ выглядит таким вот образом AD34BFE4-E63E-1B37-EE09-4D06D58053B3. Далее необходимо пополнить баланс, минимум 20 рублей. Данный сервис позволяет вам отправлять до 5 SMS сообщений в сутки на свой номер совершенно бесплатно, при превышении деньги списываются согласно тарифа.

Так как мы с помощью Powershell не можем работать с API сервиса, то к нам приходит на помощь функция отправки электронной почты. Дело в том, что отправив письмо на адрес сервиса со своим API ключом, номером абонента и текстом, можно отправить SMS сообщение. Вот этот способ мы и будем использовать. Как отправить письмо с помощью Powershell можете прочитать тут (Powershell отправка почты с авторизацией через SMTP сервер Яндекса).

Отправка СМС через SMS.RU

Для отправки письма на SMS сервис нужно следовать правилу оформления таких писем:

Письма необходимо отправлять на ваш уникальный адрес:

AD34BFE4-E63E-1B37-EE09-4D06D58053B3+7XXXXXXX715@sms.ru

Можно указать несколько номеров. Перед каждым должен стоять знак плюс. Номера получателей должен быть написаны только цифрами, без пробелов и других знаков.

Номер получателя можно также не указывать в электронном адресе:

AD34BFE4-E63E-1B37-EE09-4D06D58053B3@sms.ru

В этом случае его надо указать в заголовке (подробнее ниже).

Заголовок (subject) может содержать в себе параметры отправки, например:

(необязательно) N1,N2 - дополнительные номера телефонов, через запятую и без пробелов, на которые надо отправить сообщение (необязательно) from - одобренный отправитель (после двоеточия)

7XXXXXXX715,7XXXXXXX715 from:Aero

Тело письма должно содержать текст сообщения:

hello world

Методы:

Используется отправка по SMTP протоколу. Надежность заключается в том, что в случае если между вашим и нашим сервером наблюдается ошибка связи, протокол SMTP обеспечит гарантированную повторную отправку вашего сообщения. Если бы вы использовали стандартный метод sms/send, вам бы пришлось отслеживать эти ошибки и дополнительно разрабатывать дополнительный программный код для обработки очереди исходящих сообщений.

Для подготовки скрипта нам понадобится текстовый файл с номерами абонентов разделенных запятой для отправки уведомлений. Создадим файл mobile.txt и внесем в него нужные нам номера абонентов:

+79277111111,+79277222222,+79608333333

Далее пишем небольшой сценарий для отправки электронного письма на почту SMS сервиса.


    <#
    Проект:   Отправка SMS сообщений
    Версия:   1.0

    Описание: Скрипт отправки SMS сообщений
    с помощью Powershell

    Автор:    bezramo-tlt.ru
    Сайт:     http://bezramok-tlt.ru/
    #> 



    # Функция отправки сообщения на почту
    function sendMail
    {
        param([string]$mobile)

        # API ключ для работы с сервисом SMS.RU
        $keyAPI = 'Ваш API ключ SMS.RU'
        
        # Ваш или сторонний сервер SMTP
        $serverSmtp = 'smtp.yandex.ru' 
        $port = 587

        # От кого отправляем
        $from = 'Ваш ящик@yandex.ru' 
        
        # Кому отправляем
        $to = $keyAPI+$mobile
        
        # Данные для авторизации на SMTP    
        $user = 'Ваш ящик'
        $pass = 'Пароль' 

        # Готовим сообщение к отправке
        $mes = New-Object System.Net.Mail.MailMessage
        $mes.From = $from
        $mes.To.Add($to) 
        $mes.Body = 'Test sending SMS from PowerShell'
        
        # Проходим авторизацию на сервере и отправляем письмо
        $smtp = New-Object Net.Mail.SmtpClient($serverSmtp, $port) 
        $smtp.EnableSSL = $true 
        $smtp.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
        $smtp.Send($mes)
    }

# Список телефонов для рассылки
$mobile = (Get-Content -Path $env:USERPROFILE\Desktop\mobile.txt) -split ','

# Отправляем SMS в цикле
for($i = 0; $i -lt $mobile.Length; $i++)
{
    $sendSMS = $mobile[$i]+'@sms.ru'
    sendMail $sendSMS
}

# Удаляем переменные
Remove-Variable -Name * -Force -ErrorAction SilentlyContinue
Нет комментариев, Вы можете стать первым!

Получить уведомление на Email

Введите код с картинки