Самый простой способ отправить файл по электронной почте через командную строку в * nix?

10

Какую самую простую и, желательно, самую переносимую команду я могу использовать для отправки по электронной почте отдельного файла в качестве вложения в оболочку * nix?

Ювал А
источник

Ответы:

11

Предполагая, что это двоичное вложение:

uuencode [имя файла] [имя файла] | почта [тема] [адрес получателя]

Вам не нужно беспокоиться об UUencoding, если это просто текстовый файл, например:

почта [тема] [адрес получателя] <[имя файла]

Большинство * NIX имеют mail и uuencode, так что это должно работать практически везде.

RainyRat
источник
Как насчет того, чтобы я хотел, чтобы текстовый файл был вложен, а не в теле сообщения?
Yuval
Это зависит - я не думаю, что обычная почта GNU может это сделать, поэтому вам нужно использовать реальный почтовый клиент; сосна, дурак или что-то подобное. То, что вам доступно, зависит от того, какие из них установлены в вашей системе. Используя Mutt, ответ Гэвина (ниже) будет работать просто отлично.
RainyRat
Сосна это хорошо! Могу ли я использовать его через командную строку с использованием текстового графического интерфейса?
Ювал А
Я думаю, что это выполнимо. Посмотрите на staff.washington.edu/chappa/pine/info/outgoing.html для получения дополнительной информации.
RainyRat
11

Используя Mutt, вы можете:

mutt -z -a <file> -s <subject> -- user@example.com

Или, если вы не хотите вводить тело:

mutt -z -a <file> -s <subject> -- user@example.com < /dev/null

Гэвин Мактаггарт
источник
Mutt недоступен в моих системах, в любом случае, спасибо
Yuval A
Я думаю, вы обнаружите, что это будет бросок между тем, что легко и что переносимо. mailx переносим, ​​но не обязательно легкий. Как упоминает RainyRat, я думаю, вам придется использовать полный MUA и запускать его из командной строки.
Гэвин Мактаггарт
2
Мне пришлось добавить --перед адресом электронной почты, чтобы эти команды работали.
Autumnsault
Тире фактически необходимы для отделения адреса электронной почты от имен файлов "- user@example.com", @DoctorMohawk - это правильно. Попытка добавить их выше к телу ответа.
Джефф Клэйтон
2

« sendEmail - это легкий почтовый SMTP-клиент с командной строкой. Если вам нужно отправить электронную почту из командной строки, эта бесплатная программа идеальна: проста в использовании и многофункциональна. Она была разработана для использования в скриптах bash, командных файлах , Perl программы и веб-сайты, но вполне адаптируется и, вероятно, будет соответствовать вашим требованиям. SendEmail написан на Perl и уникален тем, что не требует никаких модулей. Он имеет интуитивно понятный и гибкий набор параметров командной строки, что делает его очень простым изучать и использовать. [Поддерживаемые платформы: Linux, BSD, OS X, Windows 98, Windows NT, Windows 2000 и Windows XP] "

Я использовал это раньше и очень понравилось. Вы можете прикреплять файлы с помощью опции -a.

Клинтон Блэкмор
источник
+1 - Это было идеально для того, что мне нужно, так как это легко и все еще активно поддерживается! Если вы работаете в системе Debian, вы можете просто aptitude install sendemail. Обратите внимание, что команда устанавливается как sendEmailс большой буквы «E».
Topher Fangio
На самом деле, tar-архив содержит Perl-скрипт и пару документов. Вы можете просто скачать его, распаковать и запустить (при условии, что в вашей системе есть Perl). Рад, что тебе это нравится.
Клинтон Блэкмор
1

Я не могу добавить комментарий, но ..

  • Ответы на этот вопрос будут зависеть в значительной степени от того, какие производные от mailxвас имеются , если таковые имеются.
  • Несмотря на то, что файл должен отображаться без проблем получателем MUA, по трубопроводу uuencodeтехнически не будет создаваться электронное письмо с вложением. Посмотрите на источник полученного вами письма, чтобы понять почему.
Дэн Карли
источник
+1 за правду. Я даже не осознавал, что существует версия mailx, которая может отправлять вложения (моя, конечно, нет). Вы также правы относительно необходимости uudecoding, необходимого для конвейера uuencode -> mail.
Гэвин Мактаггарт
1

Если вам нужна абсолютная мобильность, вы можете подключиться к почтовому серверу через порт 25 и напрямую вводить команды SMTP. Они не слишком сложны, и это должно быть очень хорошо написано.

Максимус Минимус
источник
3
Вы также можете написать свой собственный SMTP-сервер.
Hark
1

Быстрый Google обнаружил эту страницу , которая описывает различные способы прикрепления файлов с использованием различных приложений. Пара наиболее распространенных -

  • uuenc8de сделать встроенное «вложение».

  • metamail -f file-to-attach -m mime-type

  • Mpack -c mime-type file-to-attach

  • остолоп -a file-to-attach

  • вяз -A file-to-attach

Кроме того, он содержит ссылки на пару сценариев оболочки и сценарий Perl для создания и отправки сообщения, что, вероятно, будет вам по душе.

Харк
источник
1
echo "Email body text" | mail -s "Subject of email" -a file.to.attach.txt my@email.com
Neobyte
источник
почта: нелегальный вариант - а
Ювал А
1
обратите внимание, что это функция mailx, убедитесь, что установлен конкретный пакет
niXar
0

Несколько лет назад я написал сценарий оболочки, который сделал именно это. Он назывался binmail.sh. Он использовал кодировщик base64 (многие исходные коды можно найти в Google ) и создавал вложения в соответствии с RFC1521 .

mouviciel
источник