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

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

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

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

Список поддерживаемых систем и языков программирования

  • PHP
  • Битрикс
  • WordPress
  • Joomla!
  • Shop
  • Webasyst
  • Python
  • Java
  • .NET
  • SugarCRM
  • MODX
  • Evolution
  • Vtiger
  • Node.JS
  • АТС
  • (Asterisk,
  • FreePBX,
  • Ruby
  • R-Keeper

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

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

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

Отправить СМС сообщение через почтовый ящик @sms.ru (email2sms) или SMTP протокол

Если вам необходимо подключить отправку СМС в программу, из которой можно только отправлять электронные письма, то мы хотим предложить вам 3 способа отправки:

Cпособ №1: указать номера получателей в адресной строке

Письма необходимо отправлять на ваш уникальный адрес, который содержит в себе ваш секретный ключ api_id и номера телефонов получателей, разделенные знаком плюс:

B6BF2AF9-C556-7235-B4C3-EFFABCC172AB+79278924049+74993221627@sms.ru

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

Cпособ №2: указать номера получателей в заголовке (поле Subject) письма

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

B6BF2AF9-C556-7235-B4C3-EFFABCC172AB@sms.ru

В заголовке (поле Subject) необходимо указать номера получателей:

79278924049,74993221627

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

Cпособ №3: провести полноценную авторизацию по вашему логину/паролю на нашем SMTP сервере и передать номера получателей в поле "Кому" (RCPT TO)

Данный способ подходит для программ, которые устанавливаются на стороне пользователя (ремонтные мастерские, салоны красоты), в которых нет возможности отправлять СМС, но есть возможность отправлять электронные письма через SMTP сервера. Вам необходимо указать следующие настройки в вашей программе, которая использует отправку сообщений через SMTP протокол:

    
        SMTP сервер: sms.ru
        Логин: 79278924049
        Пароль: ваш пароль от нашего сервиса
        Порт: 465 (SSL) или 587 (TLS)
    

Получателей можно указать через запятую в поле "Кому" (RCPT TO):

79278924049, 74993221627

Либо, если ваша программа требует наличие знака @ в поле получателя:

79278924049,74993221627@sms.ru

Текст сообщения передается в самом теле. В заголовке (поле Subject) можно указывать специальные параметры, описанные ниже в разделе "дополнительные опции".

Обращаем ваше внимание

Данный способ (когда номера получателей передаются без вашего ключа) работает, только когда вы провели полноценную авторизацию на SMTP сервере сервиса SMS.RU.

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

Пример файла со списком номеров для рассылки

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

+79277111111,+79277222222,+79608333333
    
      <#
      Проект:   Отправка 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
    
  

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

No-name
snoybord27.12
Можно другой сервис без повер шелл

02/04/2022 16:18:58

Админ
Админ

Добрый день!

Тут главное не путать терминологию. Сервис - это и есть ресурс который предоставляет услугу по рассылке СМС. В данном случае это sms.ru

Что касаемо отправки СМС через данный сервис, то вариантой с API очень много, PHP, Java, 1C и т.д. Посмотрите у них в документации и выберите приемлимые для вас вариант. 

02/04/2022 16:36:23


Copyright © 2014 - 2022 All rights reserved.