Массовая рассылка из консоли с помощью mutt

в 12:41, , рубрики: linux, UNIX, метки: ,

Недавно я столкнулся с задачей: требовалось разослать тысячи писем с ссылкой на опрос всем студентам нашего университета.
Проблема массовой рассылки в том, что в поле СС виден весь список именной рассылки.
Я решил эту задачу через простой почтовый клиент mutt.

Mutt является текстовым почтовым клиентом для Unix-подобных систем. Первоначально он был написан Майклом Элкинсом в 1995 году и выпущен под лицензией GNU General Public License.


Прежде всего, в корневой папке юзера нужно создать файл конфигурации:

$ joe ~/.muttrc

Тут мы объясним программе как нас зовут и какой адрес увидит получатель:

set realname="John Smith"
set from="jsmith@whitehouse.gov"
set use_from=yes

После этого нужно создать само письмо.

$ joe ~/body

Само письмо, естественно, на html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»>
</head>
<body>
<p><font color="#2E7BE4"><em><strong>Здравствуйте!</strong></em></font></p>
<p align="justify">Здесь находится текст Вашего письма, <strong><font color="#CA9E64">при получении адресатом письма, данный участок текста будет коричневого цвета</font></strong>. При создании писем используйте стандартные HTML теги для корректного отображения элементов форматирования текста, при просмотре получателем, как с использованием веб-интерфейсов, так и с использованием почтовых сборщиков (Outlook, Thunderbird и т.п.).</p>
<p>
  <font color="#2E7BE4"><strong><i>С Уважением</i></strong><br>
  </font>
</p>
</body>
</html>

Теперь нам нужен файл со списком рассылки, назовем его list.

$ joe ~/list

email@mail.com

email2@mail.com

.....и т.д.

Примечательно, что список может быть любых размеров.

Теперь, когда все подготовленно, пора переходить к самой рассылке:

$ for I in `cat list`; do cat body | mutt -e "set content_type=text/html" -a "attachment.pdf" -s "Заголовок письма" -- $I < body;echo $I;sleep 3 ;done

Этот простенький скрипт на языке bash посылает поочередно (for I in `cat list`; do cat body), на каждый адрес (-- $I), раз в три секунды (sleep 3 — чтобы сервер не принял нас за спамеров) письмо (body) из списка (list) с вложенным нами файлом (attachment.pdf) и показывает результат работы (echo $I).

Команда «set content_type=text/html» говорит о том, что письмо нужно форматировать в html.

Вот и все, надеюсь мой опыт вам пригодится.

Автор: pan_alik

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js