Как вы понимаете сам по себе Powershell не может отправлять SMS сообщения. Для этого нужен аппаратный GSM шлюз или сторонний сервис в интернете по отправке SMS. GSM шлюз не дешёвое удовольствие и служит для большого спектра задач нежели просто отправлять SMS. А так как нам нужно попросту отправить SMS сообщение, то будем использовать специальный сервис в интернете по отправки таких сообщений. Я для своего примера использовал сервис отправки SMS сообщений от SMS.RU. Данный сервис имеет богатый API и реализован на многих платформах.
Список поддерживаемых систем и языков программирования
- PHP
- Битрикс
- WordPress
- Joomla!
- Shop
- 1С
- 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 (email2sms) или SMTP протокол
Если вам необходимо подключить отправку СМС в программу, из которой можно только отправлять электронные письма, то мы хотим предложить вам 3 способа отправки:
Письма необходимо отправлять на ваш уникальный адрес, который содержит в себе ваш секретный ключ api_id и номера телефонов получателей, разделенные знаком плюс:
B6BF2AF9-C556-7235-B4C3-EFFABCC172AB+79278924049+74993221627@sms.ru
Можно указать несколько номеров. Перед каждым должен стоять знак плюс. Номера получателей должен быть написаны только цифрами, без пробелов и других знаков. В заголовке (поле Subject) можно указывать специальные параметры, описанные ниже в разделе "дополнительные опции".
Письма необходимо отправлять на ваш уникальный адрес, который содержит в себе ваш секретный ключ api_id:
B6BF2AF9-C556-7235-B4C3-EFFABCC172AB@sms.ru
79278924049,74993221627
Можно указать несколько номеров, разделенные запятыми. Номера получателей должен быть написаны только цифрами, без пробелов и других знаков. В заголовке (поле Subject) можно указывать специальные параметры, описанные ниже в разделе "дополнительные опции".
Данный способ подходит для программ, которые устанавливаются на стороне пользователя (ремонтные мастерские, салоны красоты), в которых нет возможности отправлять СМС, но есть возможность отправлять электронные письма через SMTP сервера. Вам необходимо указать следующие настройки в вашей программе, которая использует отправку сообщений через SMTP протокол:
SMTP сервер: sms.ru
Логин: 79278924049
Пароль: ваш пароль от нашего сервиса
Порт: 465 (SSL) или 587 (TLS)
Получателей можно указать через запятую в поле "Кому" (RCPT TO):
79278924049, 74993221627
Либо, если ваша программа требует наличие знака @ в поле получателя:
79278924049,74993221627@sms.ru
Текст сообщения передается в самом теле. В заголовке (поле Subject) можно указывать специальные параметры, описанные ниже в разделе "дополнительные опции".
Обращаем ваше внимание
Данный способ (когда номера получателей передаются без вашего ключа) работает, только когда вы провели полноценную авторизацию на SMTP сервере сервиса SMS.RU.
Пример файла со списком номеров для рассылки
Для подготовки скрипта нам понадобится текстовый файл с номерами абонентов разделенных запятой для отправки уведомлений. Создадим файл 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
02/04/2022 16:18:58
Добрый день!
Тут главное не путать терминологию. Сервис - это и есть ресурс который предоставляет услугу по рассылке СМС. В данном случае это sms.ru
Что касаемо отправки СМС через данный сервис, то вариантой с API очень много, PHP, Java, 1C и т.д. Посмотрите у них в документации и выберите приемлимые для вас вариант.
02/04/2022 16:36:23