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

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

Простой вариант
cat file.txt | mail -s "text file" your@domain.com
отправит файл "как есть", в теле письма. Но так не получится отправить картинки или несколько файлов.

Вариант через uuencode (для centos ставим пакет sharutils), совсем старый метод, можно отправть 1 файл
uuencode -m input-attachment.txt output-attachment.txt | mail -s "Email With Base64 Attachment" your@domain.com


Вариант с MIME
самая простая реализация через mutt
Файлы прикладываются через -a, опция-файл, опция-файл. Но похоже, что в последних версиях можно указать просто -a, список файлов и "--" (два тире) как конец списка.
echo '' | mutt -s "subject" -a file.txt your@domain.com 
mutt требует обязательного тела, поэтому если нужно просто отправить файлы, нужно в начале поставить echo "" или перенаправить как-то файл, через < /path/file
Если пример выше не заработал -- тему письма можно перенести после списка файлов или проставить перед адресом " -- "
Ещё есть неприятный момент -- если домашний каталог выставлен неверно, в место куда нельзя писать или в тот же /dev/null, при отправке будет
/usr/sent: Permission denied (errno = 13)
Could not send the message.

Он пытается сделать файл "отправленное", и не может, из-за этого ломается. Фикс - в домашнем каталоге создать ~/.muttrc с содержимым
set copy=no

Или в любом другом месте, но указать этот файл через ключ -F

Если нужно отправить файлы по маске, а версия mutt старая (ниже чем 1.5.15):
http://stackoverflow.com/questions/17342450/mutt-command-with-multiple-attachments-in-single-mail-unix


Также можно через mailx, у него тоже есть опция -a

И через metasend (пакет metamail), но там другой синтаксис.

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

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