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.