Bagaimana cara mengirim email melalui perintah mailx UNIX?


Jawaban:


109

sebuah contoh

$ echo "something" | mailx -s "subject" recipient@somewhere.com

untuk mengirim lampiran

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

dan untuk mengirim lampiran DAN menulis badan pesan

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
Saya mencobanya tetapi tidak ada tanggapan. Baik itu memberikan beberapa pesan kesalahan atau mengirim email ke myname@gmail.com. Apakah konfigurasi server diperlukan?
pengguna269484

2
tidak diperlukan konfigurasi apa pun. Periksa koneksi internet Anda. Saya memiliki koneksi langsung ke internet melalui kabel, saya tidak menggunakan proxy atau apa pun sehingga berfungsi di pihak saya.
ghostdog74

2
Anda juga harus memeriksa pesan kesalahan di kotak masuk Anda. Yaitu lari mail.
hafichuk

2
Namun, perhatikan bahwa itu uuencodeadalah teknologi warisan dari milenium lampau yang tidak menghasilkan apa yang kita maksud sekarang dengan "kemelekatan". Ini pada dasarnya menempatkan sepotong campur aduk yang dapat dibaca mesin di akhir teks pesan. Di zaman sekarang ini, Anda akan lebih baik dilayani oleh mailer yang peka-MIME dengan baik. Sayangnya, tidak ada mailxpenggantian yang didukung secara universal dengan fitur MIME, tetapi jika Anda punya mutt, itu mungkin jalur yang paling tidak tahan.
tripleee

5
@ user269484 Gmail tidak menerima email dari alamat IP yang tidak sah. Baca support.google.com/mail/answer/10336

34

Ini dia:

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS. Tubuh dan subjek harus diberi tanda petik ganda. Hapus kutipan dari FROM_EMAILdan To_EMAILsaat mengganti alamat email.


1
Di Mac Anda akan menerima pesan kesalahan dari perintah mailx jika Anda menggunakan -r mailx: opsi ilegal - r Penggunaan: mailx [-EiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [ -F] ke-addr ... mailx [-EHiInNv] [-F] -f [nama] mailx [-EHiInNv] [-F] [-u pengguna] mailx -e [-f nama] mailx -H
jcpennypincher

Anda dapat melakukan -S from=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < file_name

melalui mailxutilitas kita dapat mengirim file dari unixke mail server. Di sini, di kode di atas kita bisa melihat parameter pertama adalah -s "subject of mail" parameter kedua mail IDdan parameter terakhir adalah nama file yang ingin kita lampirkan


1
Ini tidak melampirkan file, ini menempatkan konten file ke dalam tubuh
Guus

5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c dan -b adalah opsional.

-s: Tentukan subjek; jika subjek berisi spasi, gunakan tanda kutip.

-c: Kirim salinan karbon ke daftar pengguna yang dipisahkan dengan koma.

-b: Kirim salinan blind carbon ke daftar pengguna yang dipisahkan dengan koma.

Semoga jawaban saya menjelaskan keraguan Anda.


5

Lebih cepat dengan perintah MUTT

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -c daftar cc email
  2. -s daftar subjek
  3. -y untuk mengirim surat

Saya harus memisahkan lampiran dengan "-" untuk membuatnya bekerja seperti ini:echo "" | mutt -s "test" -a ./file -- name@mail.com -y
subtleseeker

4

Dari halaman manual:

Mengirim surat

Untuk mengirim pesan ke satu atau lebih orang, mailx bisa dipanggil dengan argumen yang merupakan nama orang yang akan dikirimi email. Pengguna kemudian diharapkan untuk mengetikkan pesannya, diikuti dengan 'control-D' di awal baris.

Dengan kata lain, mailx membaca konten yang akan dikirim dari input standar dan dapat dialihkan seperti biasa. Misalnya:

ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr

3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log

1

Menyesuaikan alamat FROM

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

Kecuali dari man mail: -f [file] Baca isi mbox pengguna (atau file yang ditentukan) untuk diproses; ketika mailx ditutup, ia menulis pesan yang tidak dihapus kembali ke file ini. File string ditangani seperti yang dijelaskan untuk perintah folder di bawah ini.
ZJ Lyu

Itu tergantung pada versi mana yang Anda gunakan. Ada beberapa persaingan maildan mailxperintah yang tidak kompatibel dengan opsi berbeda.
tripleee

1

Berikut adalah fungsi multifungsi untuk menangani pengiriman surat dengan beberapa lampiran:

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

function call: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "daftar lampiran dipisahkan oleh spasi"

Catatan: Hapus tanda kutip ganda dalam panggilan

Selain itu, harap ingat untuk menentukan secara eksternal $ titulo (subjek) dan $ cuerpo (body) email sebelum menggunakan fungsi


0

Jika Anda ingin mengirim lebih dari dua orang atau DL:

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

sini:

  • -s = subjek atau judul surat
  • -r = sender mail atau DL

Bisakah Anda menjelaskan mengapa echo digunakan untuk melewatkan badan pesan? Jika saya menghilangkan ini dan mengeksekusi dari MailX, kursor berkedip seolah-olah menunggu masukan.
LonelyRogue
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.