Найпростіший спосіб надіслати файл електронною поштою через командний рядок у * nix?


10

Яку найпростішу - і, можливо, найбільш портативну - команду, яку я можу використовувати для надсилання одного файлу як вкладення оболонки * nix?

Відповіді:


11

Припустимо, що це двійкове вкладення:

uuencode [ім'я файлу] [ім'я файлу] | mail -s [тема] [адреса одержувача]

Вам не потрібно займатись UUencoding, якщо це лише текстовий файл, наприклад:

mail -s [тема] [адреса одержувача] <[ім'я файлу]

Більшість * NIXes мають пошту та uuencode, тому це має працювати майже в будь-якому місці.


Як щодо того, якщо я хочу, щоб текстовий файл був вкладеним файлом, а не в тілі повідомлення?
Ювал

Це залежить - я не думаю, що звичайна пошта 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
Мені довелося додати --адресу електронної пошти, щоб ці команди працювали.
Осінь,

Дефіси насправді потрібні, щоб відокремити адресу електронної пошти від імені файлів "- 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

Насправді, тарбол містить сценарій perl та пару документів. Ви можете просто завантажити його, витягнути та запустити (за умови, що у вашій системі є perl). Рада, що вам це подобається.
Клінтон Блекмор

1

Я не можу додати коментар, але ..

  • Відповіді на це дуже залежатимуть від того, яке, якщо таке є, похідне від mailxвас є.
  • Хоча файл повинен відображатися без проблем отримуючим MUA, трубопроводи з uuencodeтехнічно не створюють електронний лист із вкладенням. Погляньте на джерело отриманого електронного листа, щоб зрозуміти, чому.

+1 для правди. Я навіть не розумів, що існує версія mailx, яка може надсилати вкладені файли (у мене, звичайно, немає). Ви також правильно знаєте ручне удекодування, необхідне для трубопроводу uuencode ->.
Гевін Мак-Таггарт

1

Якщо ви хочете отримати абсолютну портативність, ви можете зателефонувати на свій поштовий сервер на порту 25 і безпосередньо видавати команди SMTP. Вони не надто важкі, і це повинно бути дуже сценарно.


3
Ви також можете написати власний SMTP-сервер.
hark

1

Швидкий пошук Google відкрив цю сторінку , де описано різні способи прикріплення файлів за допомогою різноманітних програм. Пару більш поширених -

  • uuenc8de зробити вбудоване "вкладення".

  • метамайли -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

пошта: незаконний варіант - а
Ювал

1
зауважте, що це функція mailx, переконайтеся, що встановлений конкретний пакет
niXar

0

Деякі роки тому я написав сценарій оболонки, який зробив саме це. Його називали binmail.sh. Він використовував кодер base64 (багато вихідних кодів можна знайти в google ) та вбудований додаток відповідно до RFC1521 .


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.