отправка e-mail из командной строки

Потребовалось сделать рассылку напоминаний об оплате услуг, раз в месяц. Городить сложные скрипты не хотелось. Воспользовался протоколом SMTP и утилитой curl.

#!/bin/bash

# получаем прошлый месяц и год, название месяца на русском
past_month=$(LC_ALL=ru_RU.UTF-8 date -d "-1 month" +%B\ %Y)

# Отправляем письмо одной строкой через сервис яндекс
curl --url 'smtps://smtp.yandex.ru:465' --ssl-reqd --mail-from 'from@yandex.ru' --mail-rcpt 'to@gmail.com' --user 'from@yandex.ru:password' -T <(echo -e "From: encoded_sender_name <from@yandex.ru>\nTo: encoded_recipient_name <to@gmail.com>\nSubject: encoded_subject\n\nНапоминиание об оплате за $past_month!")

как работает:
в переменную $past_month получаем предыдущий месяц прописью и год, для этого включаем русскую локаль

следом отправляем письмо, авторизовавшись на сервере SMTP, используем подключение ssl, чтобы безопасно =) и построчно скармливаем команды серверу

encoded_sender_name, encoded_recipient_name и encoded_subject кодируйте, если используете не латинские символы https://en.wikipedia.org/wiki/MIME#Encoded-Word

Поделиться
Отправить
 675   2021   bash   curl   SMTP