Как послать письмо с аттачем в UNIX?

Вадим Фёдоров, 17.05.03, http://www.vadim.org.ua

Пользователь UNIX часто сталкивается с проблемой, как заставить скрипт написанный на bash или shell отправлять письмо с прикрепленным файлом? Ниже мы рассмотрим различные способы отправки писем с прикрепленными файлами.

Во всех примерах используются следующие переменные:

TXTFILE=/tmp/textfile # Текст сообщения
ATTFILE=/tmp/binary_file #Файл который должен быть прикреплен к письму
SUBJECT="Your attachment" # Тема письма
[email protected] # Адрес получателя

Способ 1: Использование UUE кодирования.

Данный способ позволяет послать перекодированный файл, как текст сообщения.

uuencode $ATTFILE $ATTFILE | mail -s "$SUBJECT" $MAILTO
или
(uuencode $FILE1 $FILE1; uuencode $FILE2 $FILE2) | mail -s "$SUBJECT" $MAILTO

Способ 2: Использование metamail

metamail (ftp://thumper.bellcore.com/pub/nsb/) - набор утилит для работы с сообщениями в MIME формате. metasend, рассматриваемая ниже предназначена для отправки писем в MIME формате.

metasend -b -s "$SUBJECT" -f $TXTFILE -m text/plain -e none -n -f $ATTFILE -m application/octet-stream -e base64 -t $MAILTO

Способ 3: Использование mpack

mpack (ftp://ftp.andrew.cmu.edu/pub/mpack/) - небольшая утилита, предазначенная для кодирования/декодирования сообщений в MIME формате.

mpack -s "$SUBJECT" -c application/octet-stream $ATTFILE $MAILTO

Способ 4: Использование mutt

mutt - популярный почтовый агент, который с командной строки позволяет очень просто отправить письмо с прикрепленным файом.

mutt -a $ATTFILE -s "$SUBJECT" $MAILTO < $TXTFILE

Ссылки по теме:

http://www.shelldorado.com/articles/mailattachments.html