Bir eki komut satırından nasıl e-postayla gönderebilirim


26

Ekleri komut satırından e-postayla göndermek mümkün mü?

Mümkünse, bu kadar basit bir şey istiyorum:

mail -a myfile.txt -t me@example.com -s "Here's my file"

1
Varsayılan ubuntu komut satırı mail user-agent mail(aka mailx) MIME bilgisizdir, bu nedenle ekleri 1980'lerde olmayan bir şekilde işleyemez. Bu iyi bir soru, kanonik Kanonik MUA'yı arıyorum; gelmek için daha fazla.
msn

Yanıtlar:


18

Ubuntu deposundaki tüm posta kullanıcı ajanların, şunlar anlaşılmaktadır ahmak Uzun Süreli Desteği ile kutsanmış komut satırı MUA olduğunu.

Kılavuza göre , aynen şöyle bir şey yapabilirsiniz:

mutt -a myfile.txt -s "Here's my file" -- me@example.com

bir kişinin bir Posta Aktarımı Aracısı'na da ihtiyacı olduğu için hiçbir yere gitmemesi dışında. Popüler olanlar:

  • saygıdeğer sendmail
  • postfix
  • exim4
  • qmail
  • nullmailer

ve Canonical’in desteklediği görünen tek şey postfix (Steve düzeltmesi için teşekkürler) ve exim4 .

Ayrıca, xdg-email'in uygun bir Ubuntu MUA olduğunu da söyleyebiliriz , ancak yalnızca sizin tercih ettiğiniz MUA'yı sizin adınıza çalıştıran çıplak kemikli bir ön uç .

Hangi MTA'nın kullanımınız için uygun olabileceğine dair tavsiye almak isterseniz, burada bir soru daha açıklayın.


Harika bir soru, teşekkürler. Posta kutum üzerinde çalışmamı siz istediniz. ISS'ye nihayetinde boşalan MTA'yı kullandım ve example muttkomutu reklamı yapıldı. Bu arada, nullmailer sahte bir sendmail ön uçuna sahiptir, böylece sendmail ile konuşmayı bekleyen çoğu program benden sıfır çabayla gerçek bir MTA'ya karıştırılır.
msn,

msw, exim4'ün kurallı tek destek olduğunu neden iddia ettiğinizi tam olarak bilmiyorum, postfix de ana durumda ve ubuntu-server kurulumundan Posta Sunucusu görev seçimini seçerseniz etkin olan şeydir. Exim4'ün debian varsayılan MTA olduğuna inanıyorum ve geçmişte paketleme tercihleri ​​varsayılan olarak kullanılmasına neden olmuş olabilir, ancak bir süredir postfix kesinlikle Ubuntu'da tercih edilen MTA'dır.
Steve Beattie

Ayrıca, (mime farkında olmayan) MUA'nız olarak bsd mail / mailx ile birlikte giderseniz, gerçekte postayı göndermek için bir tür MTA'ya ihtiyacınız olacağını unutmayın. Ama zaten senin için mutt daha iyi. :-)
Steve Beattie

11

Ben de ek dosya gönderirken sorun yaşadım. Eksiz bir e-posta gönderdiğimde başarılı oldu ancak ekli değildi. Bu sorun ile peyda oldu sendemail, mutt, mail, mailx, uuencodekomutları.

Neyse ki, komik bir şekilde çözüldü. E-posta göndermek için Gmail'i kullanıyorum. Gmail'inizi, http://www.linuxandlife.com/2013/01/s/send-email-from-linux-terminal.html adresinde bildirildiği gibi terminaldeki komutlar aracılığıyla e-posta göndermek için yapılandırabilirsiniz .

Aşağıdakileri kullanarak bir metin e-postası gönderebilirsiniz:

mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt 

ama olamaz aşağıda eki olarak aynı dosya göndermek:

mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt

veya:

mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

Sonunda, yalnızca bu biçimin bir ek gönderebileceğini anladım:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

Tuhaf, aradaki fark "yankı" komutunun varlığıdır.

Güncelleme: 201808

Bu -aseçenek şimdi eki için Büyük Harf ile değiştirilmiş görünüyor Göre başlık değiştirme gibi görünüyor doc-A-a


Mükemmel! Teşekkürler. Dosyamı birine göndermeye çalışıyordum .zshrcve mailhızlı mesaj göndermek için çok kullanmama rağmen , bir eki göndermeye çalışmak işe yaramadı. Sadece argüman sırasının çok önemli olduğunu fark etmenin mümkün olduğunu onaylamaya ihtiyacım vardı . Bu benim için işe yaradı: mail -s "zshrc" -a ~/.zshrc username@example.comtabii ki hala mesaj gövdesini yazıp ctrl+dson boş satıra çarptım.
Karl Wilbur

Kullanarak mail username@example.com -a ~/.zshrc"iş" yaptım mesajı gönderdi ancak dosyayı göndermedi. Denedim Had mail username@example.com -a ~/.zshrc -s 'zshrc'alıcı adresindeki sonra parametreler göz ardı ediliyordu bariz olurdu.
Karl Wilbur

@Masoud lnk bozuldu ... güncellemek istedi, ancak hangi belgeleri sağladığınızı daha iyi biliyorsunuz, bu yüzden size izin verdim
Philippe Gachoud

6

Son zamanlarda komut ve parametrelerin değiştirildiğini buldum.

Eklerinizi bu komutla göndermek istiyorsanız:

mail -s "your subject" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt

Seçenek , BÜYÜK olan attachmentolmalıdır .-AA


3

Bir dosya göndermek isteyebilirsiniz kabuğundan , ama aksi Thunderbird kullanabilirsiniz .

Bu durumda, deneme thunderbird -remote ...yararlıdır - Thunderbird'ün genellikle çalıştığını varsayalım:

Komut, çalışan bir thunderbird örneğinin posta oluşturma penceresini açar.
"Kimden" adresi, thunderbird'de yapılandırılmış varsayılan adresinizdir .
Ayrıca, mevcut hesap ayarları kullanılır, ayrı bir kurulum gerekmez.

you@example.comKonu "S", "B" gövdesi ve bir eke sahip olan bir posta için , /some/absolute/file.txtkomut

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"

İki sorun var:

Ekli dosya pratikte sıkıcı olan mutlak bir yolla verilmelidir . readlink -fGöreceli yolları çözmek için bu işlem yapılabilir :

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"

Ayrıca, komut çok uzun. Dört değişkenli bir kabuk betiği veya kabuk işlevi kullanın:

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

Bu fonksiyonla, komut okunabilir hale gelir:

thunderbird-compose 'Some Subject' test@example.com 'Body of message' file1

eki ile bir thunderbird "Yaz" penceresi açılacak ve Kimden, Kime, Konu ve gövde metni doldurulmuş olacak. Gönderilmeden önce düzenlenebilir .


2

heirloom-mailxdebian içindeki paket mailxkolayca mime eklerini gönderme komutu sağlar. benim için işleri takip etmek;

 mailx -a attachment.zip -s subject rctp@domain.to

1
İhtiyacım olan eksik parça buydu; mailve mailxRH benzerler dahil sahiptir -adosya ekleri için değil, Debian benzerler dahil kimse yok.
DopeGhoti

0

Ek ile birlikte gövde metni eklemek için kullanılan başka bir cevap eklemek istiyorum. Alkış !!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.