Bagaimana cara mengirim surat dari baris perintah?


215

Bagaimana cara mengirim surat dari baris perintah?



1
Anda juga bisa menggunakan pinus.
Kaveh

1
Anda juga dapat menginstal msmtp dan mengikuti instruksi yang dijelaskan dalam ArchWiki
Thiago Perrotta

2
Sayang sekali jawaban untuk ini sudah ketinggalan zaman. Ini pertanyaan penting yang bisa menggunakan tutorial yang bagus
6005

Jawaban:


36

Cobalah untuk menginstal Klien Email Mutt . Opsi lainnya adalah menggunakan emacs dengan gnus . Pilihan lain juga tersedia ... IMHO, Anda harus menggunakan lebih banyak detail dalam pertanyaan Anda, atau beberapa jawaban berbeda untuk pertanyaan Anda, Anda akan menerima :-)


2
Diterima yang ini karena tidak memerlukan konfigurasi apa pun dan cukup ramah pengguna.
Olivier Lalonde

21
Tunggu. mutt - user friendly? one-liner paling gila yang pernah saya baca hari ini :)
Stann

155
  1. Pasang ssmtp Instal ssmtp :

    sudo apt-get install ssmtp
    
  2. Edit file konfigurasi ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Tambahkan teks berikut:

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Jalankan ssmtp dan berikan alamat email penerima:

    ssmtp recepient_name@gmail.com
    
  5. Berikan detail pesan sebagai berikut:

    To: recipient_name@gmail.com
    From: username@gmail.com
    Subject: Sent from a terminal!
    
    Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
    (Notice the blank space between the subject and the body.)
    
  6. Tekan Ctrl+ Duntuk mengirim.


Anda juga dapat memasukkan teks ke dalam file dan mengirimkannya sebagai berikut:

ssmtp recipient_name@gmail.com < filename.txt

29
Rasanya aneh meninggalkan kata sandi email saya terekspos di beberapa file di komputer. Apakah ini aman?
oadams

2
@oadams tidak terlalu aman. Gunakan verifikasi 2 langkah untuk menurunkan risiko Anda, atau gunakan gateway email yang tidak memerlukan kata sandi, seperti ISP Anda.
itsadok

5
Jangan menginstal ssmtp di server dengan postfix diinstal. Postfix akan dihapus. Sebagai gantinya, cukup gunakan sendmail user@example.com <file.txt yang akan berfungsi baik dengan postfix atau ssmtp.
Alistair Buxton

2
Hal aneh lain yang ingin saya bagikan di sini adalah, itu tidak berfungsi untuk saya ketika saya memiliki kata sandi yang panjang / rumit tetapi berfungsi ketika saya memodifikasinya menjadi kata sandi yang sederhana, aneh tapi benar. Saya juga mendengar hal yang sama dari orang lain tetapi mencobanya setelah banyak usaha yang gagal untuk mengirim surat & segera setelah saya menyederhanakan kata sandi, saya terkejut, itu hanya berhasil;)
Rajat Gupta

Jika Gmail tidak mengizinkan server Anda untuk mengakses, login ke Gmail di server dengan browser baris perintah. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee

87

Sebagian besar waktu Anda tidak perlu mengkonfigurasi server SMTP yang dapat Anda gunakan maildari commandline (jika belum ada, instal dengan sudo apt-get install mailutils). (Atau jika Anda berada di server tempat sendmail dikonfigurasikan, dll.)

marco@dagobah:~$ mail -v marco.ceppi.use@gmail.com
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Anda mengakhiri pesan dengan satu .saluran. Saat itulah mailakan meminta Anda untuk Cc:memasukkan informasi (atau biarkan kosong) dan mailkemudian akan mencetak informasi tambahan tentang apa yang berusaha dilakukan, serta merinci pemrosesan menghubungkan, mengirim, dan menerima data dari server mail.


28
Saya akan menambahkan jawaban untuk menyertakan "sudo apt-get install mailutils" karena tidak ada pada instalasi Ubuntu 10.04 yang bersih. Juga, mengakhiri pesan dengan a. pada satu baris tidak berfungsi. Saya harus "Ctrl-D" sebagai gantinya. Terakhir, pesannya tidak masuk!
Olivier Lalonde

7
@OlivierLalonde sudo apt-get install mailutilsakan menginstal server SMTP postfix, yang mungkin sedikit kelebihan berat bagi beberapa orang.
vaab

5
mailutils juga akan menginstal mysql!
chmike

17
-v pilihan tidak dalam pemasangan mail saya 2.99.98, juga harus menggunakan Ctrl + D untuk mengakhiri
markmnl

2
Harap perbarui pertanyaan ini, ini sudah usang.
phil294

47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

pemakaian:

sendemail -f fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -xp gmailpassword 

Jika Anda tidak ingin menentukan kata sandi di baris perintah (umumnya bukan hal yang baik untuk dilakukan), Anda dapat menghilangkan parameter itu dan mengirim email akan meminta kata sandi ... dan menampilkannya di layar, tetapi setidaknya itu tidak akan ada dalam sejarah baris perintah Anda.


Mengirim surat dari akun GMail menggunakan sendmailkepastian yang sangat praktis. Terima kasih.
Mark Tomlin

Temukan tambalan di sini untuk tidak mengulangi kata sandi.
Arun

Saya harus menentukan port dengan -s smtp.gmail.com:587.
Joe Mornin

5
tambahkan spasi sebelum baris perintah untuk tidak menyimpannya dalam sejarah baris perintah
guhur

cara lain untuk tidak menampilkannya di layar bash: menyimpan kata sandi ke file, kemudian dari variabel file ke lingkungan, mis: pass=$(cat my_password); sendemail... -xp $name ...dan tentu saja jika Anda memanggilnya secara terprogram Anda dapat melakukan sesuatu yang serupa, mis: ruby system("sendemail ... -xp #{File.read 'my_password'}...")juga mungkin gagal pertama kali, Anda harus mendapatkan email ke akun itu yang menyarankan Anda "mengaktifkan aplikasi yang kurang aman" maka itu bisa berfungsi.
rogerdpack

23

mpack adalah cara commandline yang sangat baik untuk mengirim lampiran file.

apt-get install mpack

pemakaian:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn

20

Anda memerlukan MTA untuk mengirim email. Untuk ini, gunakan postfix:

sudo apt-get install postfix

Untuk mengirim email:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com

TOLONG


Anda juga perlu menginstal mailutils untuk mailx, bukan?
Nick

4
Saya berharap itu benar-benar sesederhana ini, tetapi kecuali Anda adalah seseorang yang sangat istimewa, ini tidak akan berhasil. 99,9999% ISP akan mengabaikan email dari server postfix pribadi, karena 9,99999 kali dari 10 mereka adalah spammer.
Cerin

ini tidak berhasil untuk saya, ia meminta untuk menginstal mailutilsketika saya memasukkan ini ke terminal
Mostafiz Rahman

Silakan dan instal mailutils. Anda tidak perlu postfix IIRC.
uav

@Cerin benar. Saya membutuhkan fungsionalitas pengiriman surat yang sangat sederhana untuk pekerjaan cron. Sebagai solusinya, jika Anda menerima melalui akun gmail, Anda dapat mengatur filter untuk email (melalui kata kunci atau dari alamat) dan gmail akan membiarkannya dikirim.
Carrie Kendall

15

Instal paket sendmailkemudian ketik

sendmail -t receiver@example 

kemudian tulis email Anda lalu tekan Ctrl + D


10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

atau

cat "afile" | mail -s "subject" someone@dest_email.com

hanya untuk menambah pengujian mudah: gema "Halo dunia!" | mail -s "Hello" mail@example.org
Bohne

2
Jika seseorang tidak memiliki perintah surat, jalankan saja: sudo apt-get install mailutilsdi Ubuntu / Debian atau yum install mailxdi CentOS / Redhat
Giovanni Benussi

9

Anda dapat mengirim email dari baris perintah dengan TelNet atau NetCat .

Semuanya dijelaskan di sini .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404

2
Agak sulit untuk menggunakan SSL saat menggunakan metode ini;)
iX3

1
@ iX3 cukup gunakan swaksdan Anda baik-baik saja dengan SSL / TLS, juga ;-)
Germar

Atauopenssl s_client -starttls smtp ...
Raman

7

Jika Anda mencoba mengirim e-mail dari suatu sistem, whitch tidak menjalankan server e-mail sendiri (yaitu sistem desktop), Anda perlu menginstal sesuatu seperti nullmailer atau esmtp , yang meneruskan surat lokal Anda ke surat "nyata" server.

Sebagai alat baris perintah Anda dapat menginstal mail atau mailx (paket mailutils, heirloom-mailx atau bsd-mailx). Jika Anda membutuhkan lampiran, cobalah biabam.


1
Saya suka bsd-mailx untuk perintah -E dan cronjobs
meffect

6

Saya belum pernah mencobanya tetapi ada mailperintah yang bisa mengirim email. Lihat man mail .

Untuk menguji email lokal:

echo message | mail username@localhost

6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com

di mana filenamesama: itu singkatan dari file input dan file jarak jauh.


sudo apt-get install sharutilsuntukuuencode
Janus Troelsen

1
mailutils menginstal mysql! oO
chmike

3

Anda dapat mencoba ini:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF

Ini bekerja dengan GNU Mailutils , periksa situs web untuk informasi lebih lanjut.


2

Jalankan :

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf

Berikut ini perlu ditambahkan di sana:

# The user that gets all the mails (UID < 1000, usually the admin)
root=yourusernameofgmail@gmail.com

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes

Jalankan :

sudo -H gedit /etc/ssmtp/revaliases

Masukkan di sana:

root:yourusernameofgmail@gmail.com:smtp.gmail.com:587

Aktifkan "aplikasi kurang aman" di Gmail:
https://support.google.com/accounts/answer/6010255?hl=id

Uji dengan menjalankan yang berikut ini di terminal:

echo "Body of mail is abc" | mail -s "Subject is xyz" "someusername@gmail.com"`

1

Selain di atas saya masih mendapatkan kesalahan ini

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  somebody@mil.gov
[<-] 220 smtp.gmail.com ESMTP v193sm19198825qka.18 - gsmtp
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] aG94Z2VuZUBrrrFpbC5jb20=
[<-] 334 UGFzweliecmQ6
[<-] 534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp
ssmtp: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp)

SOLUSI: lakukan reset kata sandi gmail bahkan ketika kata sandi saat ini benar ... mungkin tindakan pencegahan keamanan Google

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.