Cara termudah untuk mengirim email file melalui baris perintah di * nix?

10

Apa yang paling mudah - dan lebih disukai yang paling portabel - perintah yang dapat saya gunakan untuk mengirim email satu file sebagai lampiran * nix shell?

Yuval A
sumber

Jawaban:

11

Dengan asumsi itu adalah lampiran biner:

uuencode [nama file] [nama file] | mail -s [subjek] [alamat penerima]

Anda tidak perlu repot dengan UUencoding jika itu hanya file teks, misalnya:

mail -s [subjek] [alamat penerima] <[nama file]

Sebagian besar * NIX memiliki surat dan uuencode, jadi ini seharusnya bisa digunakan di mana saja.

RainyRat
sumber
Bagaimana kalau saya ingin file teks sebagai lampiran, dan bukan di badan pesan?
Yuval A
Itu tergantung - Saya tidak berpikir mail GNU biasa bisa melakukan itu, jadi Anda harus menggunakan klien email yang sebenarnya; pinus, mutt, atau yang serupa. Yang mana dari ini yang tersedia untuk Anda tergantung pada yang diinstal sistem Anda. Menggunakan mutt, jawaban Gavin (di bawah) akan berfungsi dengan baik.
RainyRat
Pine bagus! Dapatkah saya menggunakannya melalui baris perintah dengan menggunakan GUI tekstual?
Yuval A
Saya pikir itu bisa dilakukan. Lihatlah staff.washington.edu/chappa/pine/info/outgoing.html untuk informasi lebih lanjut.
RainyRat
11

Menggunakan mutt, Anda dapat:

mutt -z -a <file> -s <subject> -- [email protected]

Atau, jika Anda tidak ingin mengetikkan badan:

mutt -z -a <file> -s <subject> -- [email protected] < /dev/null

Gavin McTaggart
sumber
mutt tidak tersedia di sistem saya, terima kasih
Yuval A
Saya pikir Anda akan menemukan bahwa ini akan menjadi undian antara apa yang mudah dan apa yang portabel. mailx portabel, tetapi tidak selalu mudah. Seperti yang disebutkan RainyRat, saya pikir Anda harus pergi dengan MUA penuh, dan menjalankannya dari command-line.
Gavin McTaggart
2
Saya harus menambahkan --sebelum alamat email untuk membuat perintah ini berfungsi.
Autumnsault
Tanda pisah sebenarnya diperlukan untuk memisahkan alamat email dari nama file "- [email protected]", @DoctorMohawk benar. Mencoba menambahkannya di atas ke badan jawaban.
Jeff Clayton
2

" sendEmail adalah klien email SMTP baris perintah yang ringan. Jika Anda perlu mengirim email dari baris perintah, program gratis ini sempurna: mudah digunakan dan kaya fitur. Program ini dirancang untuk digunakan dalam skrip bash, file batch , Program Perl dan situs web, tetapi sangat mudah beradaptasi dan kemungkinan akan memenuhi persyaratan Anda. SendEmail ditulis dalam Perl dan unik karena tidak memerlukan MODUL. Ia memiliki serangkaian opsi baris perintah yang intuitif dan fleksibel, membuatnya sangat mudah untuk belajar dan menggunakan. [Platform yang Didukung: Linux, BSD, OS X, Windows 98, Windows NT, Windows 2000, & Windows XP] "

Saya telah menggunakannya sebelumnya dan sangat menyukainya. Anda dapat melampirkan file dengan opsi -a.

Clinton Blackmore
sumber
+1 - Ini sempurna untuk apa yang saya butuhkan karena mudah dan masih dipelihara secara aktif! Jika Anda menggunakan sistem Debian, Anda bisa saja aptitude install sendemail. Perhatikan bahwa perintah terinstal sendEmaildengan huruf kapital 'E'.
Topher Fangio
Sebenarnya, tarball berisi skrip perl dan beberapa dokumen. Anda dapat mengunduhnya, mengekstraknya, dan menjalankannya (asalkan sistem Anda memiliki perl). Senang Anda menyukainya.
Clinton Blackmore
1

Saya tidak bisa menambahkan komentar, tapi ..

  • Jawaban atas hal ini akan sangat bergantung pada turunan mailxAnda , jika ada, yang tersedia.
  • Meskipun file harus ditampilkan tanpa masalah oleh MUA penerima, pemipaan dari uuencodesecara teknis tidak akan menghasilkan email dengan lampiran. Lihatlah sumber email yang Anda terima untuk mengetahui alasannya.
Dan Carley
sumber
+1 untuk kebenaran. Saya bahkan tidak menyadari ada versi mailx yang dapat mengirim lampiran (milik saya tentu saja tidak). Anda juga benar tentang uudecoding manual yang diperlukan dengan uuencode -> pipa surat.
Gavin McTaggart
1

Jika Anda menginginkan portabilitas absolut, Anda dapat melakukan telnet ke server email Anda pada port 25 dan mengeluarkan perintah SMTP secara langsung. Mereka tidak terlalu sulit, dan itu harus sangat skrip.

Maximus Minimus
sumber
3
Anda juga dapat menulis server SMTP Anda sendiri.
hiu
1

Google cepat membuka halaman ini , yang menjelaskan berbagai cara untuk melampirkan file menggunakan berbagai aplikasi. Beberapa yang lebih umum -

  • uuenc8de untuk membuat "lampiran" sebaris.

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

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

  • anjing kampung -a file-to-attach

  • Elm -A file-to-attach

Selain itu, ia memiliki tautan ke beberapa skrip shell dan skrip Perl untuk membuat dan mengirim pesan, yang mungkin akan lebih sesuai dengan keinginan Anda.

mendengar
sumber
1
echo "Email body text" | mail -s "Subject of email" -a file.to.attach.txt [email protected]
Neobyte
sumber
mail: opsi ilegal - a
Yuval A
1
perhatikan bahwa ini adalah fitur mailx, pastikan bahwa paket tertentu diinstal
niXar
0

Beberapa tahun yang lalu, saya menulis skrip shell yang melakukan hal itu. Itu disebut binmail.sh. Ini menggunakan encoder base64 (banyak kode sumber dapat ditemukan dengan google ) dan membangun lampiran menurut RFC1521 .

mouviciel
sumber