Найпростіший спосіб надіслати файл електронною поштою через командний рядок у * 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.