Bagaimana saya bisa mengirim email lampiran dari baris perintah

26

Apakah mungkin untuk mengirim lampiran melalui email dari baris perintah?

Jika memungkinkan, saya ingin sesuatu yang sederhana:

mail -a myfile.txt -t [email protected] -s "Here's my file"
Conorgriffin
sumber
1
Agen-pengguna email baris perintah ubuntu default mail(alias mailx) adalah MIME bodoh karena itu tidak dapat menangani lampiran dengan cara apa pun yang bukan 1980-an. Ini adalah pertanyaan yang bagus, saya mencari Kanon Kanonik kanonik; akan datang lebih banyak lagi.
msw

Jawaban:

18

Dari semua agen pengguna e-mail di repositori Ubuntu, tampaknya mutt adalah MUA baris perintah yang diberkati dengan Dukungan Jangka Panjang.

Menurut manual , Anda dapat melakukan sesuatu persis seperti:

mutt -a myfile.txt -s "Here's my file" -- [email protected]

kecuali itu tidak akan pergi ke mana-mana karena orang juga membutuhkan Agen Transfer Surat. Yang populer adalah:

  • sendmail yang terhormat
  • postfix
  • ex44
  • qmail
  • nullmailer

dan satu-satunya yang sepertinya didukung Canonical adalah postfix (terima kasih atas koreksi Steve) dan exim4 .

Orang juga bisa mengatakan bahwa xdg-email juga merupakan Ubuntu MUA yang tepat, tetapi itu adalah front-end yang hanya menjalankan MUA pilihan Anda atas nama Anda.

Jika Anda ingin saran tentang MTA mana yang cocok untuk Anda gunakan, mungkin buka pertanyaan lain di sini.

msw
sumber
Pertanyaan bagus, terima kasih. Anda meminta saya agar surat berfungsi di kotak saya. Saya menggunakan MTA nullmailer untuk secara membabi buta menyampaikan ke ISP saya, dan muttperintah contoh berfungsi seperti yang diiklankan. Secara kebetulan, nullmailer memiliki front-end sendmail palsu sehingga sebagian besar program yang berharap untuk berbicara dengan sendmail akan dikirim ke MTA nyata tanpa upaya dari saya.
msw
msw, saya tidak yakin mengapa Anda mengklaim exim4 adalah satu-satunya dukungan kanonik, postfix juga ada di utama dan apa yang diaktifkan jika Anda memilih pemilihan tugas Server Email dari instalasi ubuntu-server. Saya percaya exim4 adalah MTA default debian, dan di masa lalu, preferensi kemasan mungkin menyebabkannya ditarik secara default, tetapi untuk sementara waktu sekarang, postfix jelas merupakan MTA yang disukai di Ubuntu.
Steve Beattie
Oh, dan catat juga bahwa jika Anda menggunakan bsd mail / mailx sebagai MUA (non-mime aware) Anda, Anda masih memerlukan MTA sejenis untuk benar-benar mengirim surat. Tapi mutt lebih baik untukmu. :-)
Steve Beattie
11

Saya juga mengalami masalah dengan mengirim file lampiran. Ketika saya mengirim email tanpa lampiran, itu berhasil tetapi tidak dengan lampiran. Masalah ini adalah ada dengan sendemail, mutt, mail, mailx, uuencodeperintah.

Untungnya, itu diselesaikan dengan lucu. Saya menggunakan Gmail untuk mengirim email. Anda dapat mengonfigurasi gmail Anda untuk mengirim email melalui perintah di terminal sebagaimana dinyatakan di http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .

Anda dapat mengirim email teks menggunakan:

mail -s "hello" [email protected] < /home/masoud/YOURFILE.txt 

tetapi Anda tidak dapat mengirim file yang sama dengan lampiran seperti di bawah ini:

mail -s "hello" [email protected] -a /home/masoud/YOURFILE.txt

atau:

mail -s "hello" -a /home/masoud/YOURFILE.txt [email protected]

Akhirnya, saya mengerti bahwa hanya format ini yang dapat mengirim lampiran:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt [email protected]

Lucunya, perbedaannya adalah keberadaan perintah "echo".

Pembaruan: 201808

Tampaknya -aopsi telah diubah dengan Huruf besar -A untuk lampiran sekarang. The -atampaknya untuk mengubah header yang sesuai dengan doc

Masoud
sumber
Luar biasa! Terima kasih. Saya mencoba mengirim .zshrcfile saya ke seseorang dan meskipun saya menggunakan mailbanyak untuk mengirim pesan cepat, mencoba mengirim lampiran tidak berfungsi. Saya hanya perlu konfirmasi bahwa mungkin untuk menyadari bahwa urutan argumen sangat penting. Ini bekerja untuk saya: mail -s "zshrc" -a ~/.zshrc [email protected]... tentu saja saya masih harus mengetikkan badan pesan dan menekan ctrl+dbaris kosong terakhir.
Karl Wilbur
Menggunakan mail [email protected] -a ~/.zshrc"berhasil" karena mengirim pesan tetapi tidak mengirim file. Seandainya saya mencobanya mail [email protected] -a ~/.zshrc -s 'zshrc', sudah jelas bahwa params setelah alamat penerima diabaikan.
Karl Wilbur
@Masoud lnk rusak ... ingin memperbaruinya, tetapi Anda tahu lebih baik dokumentasi apa yang Anda berikan jadi saya berikan kepada Anda
Philippe Gachoud
6

Saya menemukan bahwa perintah dan parameter telah diubah baru-baru ini.

Jika Anda ingin mengirim lampiran Anda dengan perintah ini:

mail -s "your subject" [email protected] -A /your/attachment/absolute/path < /home/you/message.txt

Pilihan attachmentharus -Ayang MODAL A.

Alex
sumber
3

Anda mungkin ingin mengirim file dari shell , tetapi sebaliknya gunakan Thunderbird .

Dalam hal ini, coba thunderbird -remote ...berguna - dengan asumsi thunderbird biasanya berjalan:

Perintah membuka jendela tulis surat dari instance thunderbird yang sedang berjalan.
Alamat "Dari" adalah alamat default Anda yang dikonfigurasi dalam thunderbird.
Juga, pengaturan akun yang ada digunakan, tidak ada pengaturan terpisah yang diperlukan.

Untuk surel yang dituju [email protected], dengan subjek "S", badan "B", dan lampiran /some/absolute/file.txt, perintahnya adalah

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='/some/absolute/file.txt')"

Ada dua masalah:

File terlampir perlu diberikan oleh jalur absolut , yang membosankan dalam praktiknya. Itu bisa ditangani dengan menggunakan readlink -funtuk menyelesaikan jalur relatif:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='$(readlink -f file.txt)')"

Juga, perintahnya adalah panjang. Gunakan skrip shell atau fungsi shell, dengan empat argumen:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

Dengan fungsi ini, perintah menjadi dapat dibaca:

thunderbird-compose 'Some Subject' [email protected] 'Body of message' file1

akan membuka jendela "Tulis" thunderbird dengan lampiran , dan Dari, Ke, Subjek, dan isi teks isi. Ini dapat diedit sebelum mengirimnya.

Volker Siegel
sumber
2

heirloom-mailxPaket di debian menyediakan mailxperintah untuk mengirim lampiran pantomim dengan mudah. berikut ini bekerja untuk saya;

 mailx -a attachment.zip -s subject [email protected]
Furkan Mustafa
sumber
1
Ini adalah bagian yang hilang yang saya butuhkan; yang maildan mailxdisertakan dengan RH-alikes memiliki -auntuk lampiran file, tapi yang termasuk dalam Debian-alikes tidak.
DopeGhoti
0

Saya ingin menambahkan jawaban lain yang digunakan untuk menambahkan teks isi bersama dengan lampiran. Tepuk tangan!!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
Anandu M Das
sumber