Отправляем SMS-сообщение на телефон с помощью R
В 2013 году я отправлял себе прогноз погоды в sms-сообщении на телефон, используя для этого скрипт на R, API одного из онлайн-сервисов погоды, утилиту sendEmail и включенную услугу «e-mail to SMS». В 2021 году оказалось, что способ отправки SMS на телефон работает (для оператора МТС Урал) и это должно быть БЕСПЛАТНО.
По крайней мере, в биллинге оператора мы видим 0 р.:
Перед отправкой сообщения с E-mail на SMS убедитесь, пожалуйста, что у вас открыта услуга «Прием SMS с E-mail». По умолчанию, у всех абонентов МТС закрыта возможность получения сообщений с электронной почты во избежание рассылок спама.
Для работы функции необходимо предварительно установить утилиту sendEmail (см. инструкцию или просто качаете архив, exe-файл копируете в рабочую директорию со скриптом). Также мы будем использовать почту gmail, с предварительно созданным новым паролем для приложения (см. справку гугл-почты как создавать и использовать пароли приложений):
Для работы функции необходимо знать email2sms шлюз оператора. У меня MTS Урал, поэтому шлюз такой: sms.ural.mts.ru (не знаю, как у других регионов и операторов). Из того, что удалось найти в интернете:
Email2sms шлюзы операторов:
Билайн sms.beemail.ru
Мотив sms.ycc.ru
MTC sms.mtslife.ru
Мегафон sms.megafonsib.ru
Функция (gist):
#Функция отправки SMS через email2sms шлюз оператора gmail.send <- function(username, password, emailto, sub, msg) { frommailuser <- paste(username,"@gmail.com", sep='') com1 <- paste("sendEmail -f", frommailuser, "-t", emailto, "-o message-charset=utf-8 -u") com2 <- "-m " com3 <- paste("-o message-format=text -s smtp.gmail.com -o tls=yes -xu", username, "-xp", password) system(paste(com1, sub, com2, msg, com3)) }
username — имя пользователя от вашей почты на gmail.com
password — пароль приложения для почты на gmail.com (см. выше), это 16 символов вида: affdjtihminycjzl
emailto — e-mail получателя. например, [email protected] или используя email2sms шлюз оператора 79ХХХХХХХХХ@sms.ural.mts.ru), где 79ХХХХХХХХХ – ваш номер телефона, на который будем отправлять СМСку.
msg — текст сообщения (не более 320 символов)
> gmail.send("user", password = pass, emailto = telnumbers, sub = "Тестовое сообщение", msg = "Это текст сообщения")
Oct 01 03:37:25 desktop SENDEM~1.EXE[10528]: Email was sent successfully!
[1] 0
Видим сообщение от утилиты sendEmail, что сообщение успешно отправилось. В папке «Отправленные» вашего почтового ящика будет отправленное сообщение, а на телефоне мы получаем СМС вида:
Не используйте для спама. Заблокируют 😊
Отправлять себе уведомление о завершении работы скрипта или любые другие нотификации :)