среда, 25 марта 2009 г.

Отправка почты с вложением из консоли

В некоторых случаях требуется отправить письмо из консоли. Например из скрипта, который сигнализирует о каком-нибудь событии. Например окончание компиляции или о том, что кто-то залогинился на сервер. Нужно сделать следующее:

Для этого понадобится MTA (mail transfer agent) ssmtp, легковесная замена для sendmail. В gentoo можно использовать команду sendmail, которая является символьной ссылкой на /usr/sbin/ssmtp.

Настройка.
В файле /etc/ssmtp/ssmtp.conf нужно указать два параметра:
mailhub=smtp.yandex.ru
FromLineOverride=YES
В параметре mailhub нужно указать сервер исходящей почты, на котором имеется готовая учетная запись. Второй параметр сообщает программе ssmtp о том, что адрес отправителя брать из текста письма.

Отправка письма выглядит следующим образом:
echo -e "From:boxname@server.ru\nTo:\nSubject: Тема письма\nТекст письма"|ssmtp -au boxname -ap email_password -t -v

Удобно получать извещения на мобильный телефон. Только нужно узнать у своего сотового оператора, как отправлять e-mail на sms. Например отправить e-mail на sms абоненту beeline можно отправив письмо на адрес XXXXXXXXXX@sms.beemail.ru (эту услугу нужно активировать заранее).

Иногда приходится отправлять файл в виде вложения в письме. Для этого используется команда uuencode из пакета sharutils.
echo -e "From:boxname@server.ru\nTo:\nSubject: Тема письма\nТекст письма">/tmp/letter.txt && uuencode /path/to/file_name file_name >> /tmp/letter.txt && cat /tmp/letter.txt |ssmtp -au boxname -ap email_password -t -v

К сожалению, не все почтовые клиенты смогут извлечь файл из письма. Да и сама строка весьма громоздка, поэтому подходит лишь для скрипта, автоматизирующего регулярную отсылку файлов.

Комментариев нет:

Отправить комментарий