Terminalden e-posta nasıl gönderilir?


169

Linux / MacOS'ta terminalden e-posta göndermenin yollarının olduğunu biliyorum, ancak bunun nasıl yapılacağı ile ilgili uygun belgeleri bulamıyorum.

Temelde bir dosyada her değişiklik olduğunda bana bildiren benim bash betiği için ihtiyacım var.


3
Muhtemelen burada bazı ana bilgisayarların ve İSS'lerin e-posta gönderme yeteneğinizi "kapattığı" belirtilmelidir. İnsanların spam ve kimlik avı yapmayı durdurma girişimi olduğunu düşünüyorum
— Jim Jeffries

@JimJeffries Hangileri? Amazon EC2 web sunucusu kullanıyorum.
— ckjbgames

Yanıtlar:


125

Terminal'e gidin ve man mailyardım için yazın .

Ayarlamanız gerekecek SMTP:

http://hints.macworld.com/article.php?story=20081217161612647

Ayrıca bakınız:

http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

Örneğin:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

Bu example@example.com, konuya hellove iletiye bir e-posta gönderir

Merhaba

Dünya


Sadece denedim ve benim için çalıştı, ama merakımdan iki sorum var. << ne anlama geliyor, çevrimiçi '<' veya '<< ile bazı örnekler gördüm. ' Ne için kullanılır? Ve neden Dosya Sonu'nu orada ve mesajın sonunda verdiniz?
— Derin

"<< EOF" ve "EOF" bir "burada belge" olarak işaretler. İki EOF arasındaki metin çok satırlı bir dize olarak işlenir. 'Man bash'
— Joe Inwap

134
echo "this is the body" | mail -s "this is the subject" "to@address"

20
Tüm bu çözümlerin yerel olarak kurulmuş bir MTA
— Miquel

11
@Miquel iyi bir nokta. Ubuntu'da ön koşulları alabilirsiniz sudo apt-get install mailutils.
— earldouglas

3
@James, MAC'im için işe yaramıyor (((Bana yardım edebilir misin?
— neo

1
Adım adım öğretici: rianjs.net/2013/08/…
— Dušan Maďar

Garip. Yaptığım tek değişiklik adresi değiştirmek olsa da, bu bana bir "Sözdizimi: geçersiz sözdizimi" iletisi verir.
— Jewenile

41

Tek ihtiyacınız olan bir konu satırı ise (bir uyarı mesajında ​​olduğu gibi) yapmanız yeterlidir:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"

Yüklemeniz gerekebilir mailutils. Bir paket yöneticisi (örn. apt install mailutils) Aracılığıyla kurulabilir
— Jeevan Takhar

31

Muhtemelen bunun için en basit yol, curlherhangi bir ek paket kurmaya gerek yoktur ve doğrudan bir istekte yapılandırılabilir.

İşte gmail smtp sunucusu kullanan bir örnek:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from 'from-email@gmail.com' \
  --mail-rcpt 'to-email@gmail.com' \
  --user 'from-email@gmail.com:YourPassword' \
  -T <(echo -e 'From: from-email@gmail.com\nTo: to-email@gmail.com\nSubject: Curl Test\n\nHello')

Bu gerçekten iyi bir seçenek. Google hesabınız için uygulamaya özel bir şifre oluşturabilirsiniz ve bu sadece e-postayı kendi hesabınızdan verir. Çok havalı!
— dakdad

2
Harika yanıt, Son olarak iş yapmak için daha az güvenli uygulamayı
— açmayı unutmayın

@aliaksandr bu son noktayı cevabına eklemelidir. Varsayılan olarak bu seçenek (daha az güvenli uygulamalara erişim izni ver) devre dışıdır ve belirgin değildir. En azından gmail hesabını gönderen e-posta olarak kullanıyorsanız.
— EAmez

18

Linux'ta bir dosya eklemek istiyorsanız

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com

4
invalid headerEkli dosyam için bir mesaj veriyor . Doğru seçenek büyük harfti -A.
— Stephane

3
@Stephane Patrick-haugh'a göre, -a bağlantı anahtarıdır. -A, hesap komutu içindir. Adam sayfasına bakınız: linux.die.net/man/1/mailx
— MiaeKim

10

mac os veya linux os'unuzdaki terminalde bu kodu yazın

mail -s (subject) (receiversEmailAddress)  <<< "how are you?"

bir örnek için şunu deneyin

mail -s "hi" abc@example.com <<< "how are you?"<br>

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.