UNIX mailx komutuyla nasıl e-posta gönderebilirim?


Yanıtlar:


109

Bir örnek

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

ek göndermek için

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

ve ek göndermek VE mesaj gövdesini yazmak için

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

4
Denedim ama cevap vermiyor. Ne bir hata mesajı veriyor ne de postayı myname@gmail.com'a gönderiyor. Herhangi bir sunucu yapılandırmasına ihtiyaç var mı?
— user269484

2
herhangi bir konfigürasyona gerek yoktur. İnternet bağlantınızı kontrol edin. İnternete doğrudan kabloyla bağlantım var, proxy veya başka bir şey kullanmıyorum, bu yüzden benim tarafımda çalışıyor.
— ghostdog74

2
Ayrıca gelen kutunuzdaki hata mesajlarını da kontrol etmelisiniz . Yani koş mail.
— hafichuk

2
Bununla birlikte, bunun uuencodegeçmiş bir milenyumdan kalma, bugün "eklentiler" ile kastettiğimizi üretmeyen eski bir teknoloji olduğunu unutmayın . Temel olarak mesaj metninin sonuna makine tarafından okunabilir bir karmakarışık parçası koyar. Bu gün ve çağda, MIME-bilinçli bir postacı tarafından size daha iyi hizmet verilir. Ne yazık ki, mailxMIME özellikleriyle evrensel olarak desteklenen bir değiştirme yoktur , ancak varsa mutt, bu muhtemelen en az direnç yoludur.
— üçlü

5
@ user269484 Gmail, yetkisiz IP adreslerinden gelen e-postaları kabul etmez. Okuma support.google.com/mail/answer/10336

34

Buyrun :

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

PS. Gövde ve konu çift tırnak içinde tutulmalıdır. E-posta adreslerini değiştirirken FROM_EMAILve bunlardan alıntıları kaldırın To_EMAIL.


1
Mac'te -r mailx: geçersiz seçenek - r Kullanım: mailx [-EiInv] [-s konu] [-c cc-addr] [-b bcc-addr] [kullanırsanız, mailx komutundan bir hata alırsınız. -F] to-addr ... mailx [-EHiInNv] [-F] -f [ad] mailx [-EHiInNv] [-F] [-u kullanıcı] mailx -e [-f adı] mailx -H
— jcpennypincher

-S'yi =a@b.com adresinden yapabilirsiniz
— Soni

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

yoluyla mailxfayda biz bir dosyayı gönderebilir unixiçin mail server. burada yukarıdaki kodda birinci parametrenin -s "subject of mail" ikinci parametrenin mail IDve son parametrenin eklemek istediğimiz dosyanın adı olduğunu görebiliriz.


1
Bu, dosyayı eklemez, dosyanın içeriğini gövdeye koyar
— Guus

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

-c ve -b isteğe bağlıdır.

-s: Konuyu belirtin; konu boşluk içeriyorsa tırnak işareti kullanın.

-c: Virgülle ayrılmış kullanıcılar listesine karbon kopyaları gönderin.

-b: Virgülle ayrılmış kullanıcılar listesine kör karbon kopyaları gönderin.

Umarım cevabım şüphenizi açıklığa kavuşturur.


5

MUTT komutu ile daha hızlı

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 e-posta cc listesi
  2. konu listesi
  3. -postayı göndermek için

Bu şekilde çalışması için ekleri "-" ile ayırmak zorunda kaldım:echo "" | mutt -s "test" -a ./file -- name@mail.com -y
— subtleseeker

4

Man sayfasından:

Mail gönderiliyor

Bir veya daha fazla kişiye mesaj göndermek için mailx, postanın gönderileceği kişilerin isimleri olan argümanlarla çağrılabilir. Kullanıcının daha sonra mesajını yazması ve ardından satırın başına bir 'kontrol-D' yazması beklenir.

Başka bir deyişle, mailx gönderilecek içeriği standart girdiden okur ve normal gibi yönlendirilebilir. Örneğin:

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

KİMDEN adresini özelleştirme

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

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

Man mail dışında bir: -f [dosya] İşlem için kullanıcının mbox'ının (veya belirtilen dosyanın) içeriğini okuyun; mailx sonlandırıldığında, silinmemiş iletileri bu dosyaya geri yazar. Dize dosyası, aşağıdaki klasör komutu için açıklandığı gibi işlenir.
— ZJ Lyu

Hangi sürümü kullandığınıza bağlıdır. Farklı seçeneklere sahip birden fazla uyumsuz rekabet mailve mailxkomut vardır.
— üçlü

1

Aşağıda, birkaç ek ile posta gönderimini ele almak için çok işlevli bir işlev verilmiştir:

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'" "hedef" "boşlukla ayrılmış eklerin listesi"

Not: Aramadaki çift tırnak işaretlerini kaldırın

Ayrıca, işlevi kullanmadan önce e-postanın $ titulo (konu) ve $ cuerpo (gövde) kısmını harici olarak tanımlamayı unutmayın.


0

İkiden fazla kişi veya DL göndermek istiyorsanız:

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

buraya:

  • -s = konu veya posta başlığı
  • -r = gönderen posta veya DL

Bir mesaj gövdesini iletmek için neden echo'nun kullanıldığını açıklayabilir misiniz? Bunu atlar ve MailX'ten yürütürsem, imleç bir giriş bekliyormuş gibi yanıp söner.
— LonelyRogue
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.