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.