Рассылка почты из командной строки


Как обычно - в Linux всё делается просто и красиво. Подмигиваю

Рассмотрим массовую (в gmail бесплатно вроде не более 300 в сутки) рассылку почты от аккаунта gmail.com, так, что бы в пришедшем адресату письме не отображался список рассылки, и письмо не блокировалось почтовиком адресата из-за этой самой рассылки, остальные почтовики тоже не должны вызвать каких-то затруднений.

Нам понадобится msmtp - SMTP-клиент, который может использоваться как SMTP plugin для Mutt и других MUA и соответственно сам mutt -почтовый клиент с текстовым интерфейсом для Unix-подобных операционных систем.

Настройка msmtp и mutt сводится к созданию в домашней директории 2-х файлов: .msmtprc и .muttrc, c опциями подключения и данными для авторизации следующего содержания:

.msmtprc

account default
host smtp.gmail.com
port 587
protocol smtp
auth on
from e-mail #мыло пользователя гмайл
user e-mail #мыло пользователя гмайл
password pAsSwOrD
tls on
tls_starttls on
tls_certcheck off

.muttrc

set realname='Имя отправителя'
set from=e-mail #мыло пользователя гмайл
set sendmail="/usr/bin/msmtp"
set envelope_from=yes

Далее создаём в домашней папке (или где угодно и как угодно называете, на Ваше усмотрение, потом меняете пути в скрипте) папку mailing, в ней создаём файл adresa.txt со списком e-mail адресов, по одному адресу на строку и текстовый файл text.txt с текстом рассылки. В эту же папку кладем файл для аттача, если таковой нужен.

Теперь сам крипт рассылки:

#!/bin/sh
echo >~/mailing/log.txt #пишем лог
for email in $(cat ~/mailing/adresa.txt)
do
mutt -x -s "Тема письма" $email < text.txt
done
exit 1

Если надо прикрепить к письму файл (например file.jpg) - добавляем к mutt ещё опцию  -a ~/mailing/file.jpg после $email

Так же этот скрипт можно подключить в качестве сценария для Nautilus, заменив путь к аттачу переменной $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS и поместив его в папку со сценариями.

Ещё я использую оповещение (если есть Х-ы) notify-send об окончании рассылки, добавив в конкц скрипта строку:

...........
done
notify-send -u normal -i baobab РАССЫЛКА -t 0 Рассылка\ закончена.\ Проверьте\ log.txt
exit 1

Ну как-то так...Улыбаюсь

Обсудить на форуме (комментариев 5).