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

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

Поддержи проект:



Copyright © 2014 - 2021 All rights reserved.