Отправка e-mail писем с вложениями из консоли

Автор | 23.12.2008

Чтобы отослать электронное письмо из командной строки, можно воспользоваться утилитой mail. Также она может встречаться под названием mailx или Mail. Для отправки письма пишем следующую команду:

$ mail -s "Тема письма" pupkin@mail.ru
Привет!
Я пишу тебе из консоли!
Ctrl+D

Комбинация клавиш Ctrl+D (^D) с новой строки позволяет завершить ввод письма. После этого у меня появляется приглашение ввести получателя копии – просто жму “Enter”, и письмо отправляется.

Если тело письма находится в файле, то можно просто воспользоваться перенаправлением входного потока:

$ mail -s "Письмо из файла" pupkin@mail.ru < mail_body.txt 

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

$ ls | mail -s "Вывод команды" pupkin@mail.ru 

Кроме того, утилита позволяет не только читать письма, но и получать их, отвечать и делать прочие полезные манипуляции. Но вот чего она, похоже, не позволяет – так это добавить вложение к письму. Однако, это не беда. Есть немало способов отправить файл из консоли по электронной почте. Я рассмотрю три из них, которые не потребовали от меня разбираться в чем-то или что-то скачивать/устанавливать.

1. Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом:

$ uuencode image.jpg image.jpg | mail -s "Метод 1" sombeody@somewhere.net 

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

2. С помощью консольной утилиты mpack. Эта утилита пакует файл в сообщение и отсылает полученное сообщение туда, куда изволите.

$ mpack -s "Метод 2" image.jpg sombeody@somewhere.net 

3. С помощью полноценного консольного почтового клиента mutt. Можно запустить его, сформировать письмо и отправить куда надо. А можно запустить mutt в режиме эмуляции диалога mailx (параметр -x), при этом передав через параметры все необходимое, чтобы не получать лишних вопросов от этой программы. Второй вариант выглядит так:

$ echo "Смотри вложение" | mutt -x -s "Метод 3" -a image.jpg sombeody@somewhere.net 

Если какой-то из программ у вас не окажется (в чем я сильно сомневаюсь), ищите ее в репозиториях Debian.

Пишите – и да будете отвечены! 🙂

Залишити відповідь