Jak wysłać e-mail z terminala?


169

Wiem, że istnieją sposoby na wysyłanie wiadomości e-mail z terminala w systemie Linux / MacOS, ale nie mogę znaleźć odpowiedniej dokumentacji, jak to zrobić.

Zasadniczo potrzebuję go do mojego skryptu bash, który powiadamia mnie za każdym razem, gdy następuje zmiana w pliku.


3
Należy tu prawdopodobnie zauważyć, że niektórzy hosty i dostawcy usług internetowych „wyłączają” możliwość wysyłania wiadomości e-mail. Przypuszczam, że jest to próba powstrzymania ludzi przed spamowaniem i phishingiem za ich pośrednictwem
— Jim Jeffries,

@JimJeffries Które z nich? Używam serwera internetowego Amazon EC2.
— ckjbgames

Odpowiedzi:


125

Wejdź do Terminala i wpisz man mailpomoc.

Musisz skonfigurować SMTP:

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

Zobacz też:

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

Na przykład:

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

Spowoduje to wysłanie wiadomości e-mail na adres example@example.comz tematem helloi wiadomością

dzień dobry

Świat


Właśnie spróbowałem i zadziałało, ale z ciekawości mam dwa pytania. Co oznacza <<, w Internecie widziałem kilka przykładów ze znakami „<” lub „<<. ' Do czego jest to używane? I dlaczego podałeś End Of File tam i na końcu wiadomości?
— Głęboki

„<< EOF” i „EOF” oznaczają „dokument tutaj”. Tekst pomiędzy dwoma EOF jest traktowany jako ciąg wielowierszowy. Jest to opisane w
— ``

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

20
Zauważ, że wszystkie te rozwiązania zakładają, że masz lokalnie zainstalowaną MTA
— Miquel

11
@Miquel dobra uwaga. W Ubuntu wymagania wstępne można uzyskać za pośrednictwem sudo apt-get install mailutils.
— earldouglas

3
@James, To nie działa dla mojego MAC (((Czy możesz mi pomóc?
— neo

1
Samouczek krok po kroku: rianjs.net/2013/08/…
— Dušan Maďar

Dziwne. W ten sposób otrzymuję komunikat „SyntaxError: invalid syntax”, chociaż jedyną zmianą, jaką wprowadziłem, była zmiana adresu.
— Jewenile,

41

Jeśli potrzebujesz tylko wiersza tematu (jak w wiadomości ostrzegawczej), po prostu wykonaj:

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

Może być konieczna instalacja mailutils. Można go zainstalować przez menedżera pakietów (np. apt install mailutils)
— Jeevan Takhar

31

Chyba najprościej jest do tego wykorzystać curl, nie ma potrzeby instalowania żadnych dodatkowych pakietów i można to skonfigurować bezpośrednio w żądaniu.

Oto przykład użycia serwera smtp Gmaila:

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')

To naprawdę dobra opcja. Możesz wygenerować hasło specyficzne dla aplikacji dla swojego konta Google, a to spowoduje dostarczenie wiadomości e-mail z Twojego konta. Bardzo fajny!
— dakdad

2
Świetna odpowiedź, na koniec nie zapomnij włączyć mniej bezpiecznej aplikacji, aby działać myaccount.google.com/lesssecureapps
— yubaraj poudel

@aliaksandr powinien dodać ten ostatni punkt do swojej odpowiedzi. Domyślnie ta opcja (daj dostęp do mniej bezpiecznych aplikacji) jest wyłączona i nie jest widoczna. Przynajmniej jeśli używasz konta Gmail jako adresu e-mail nadawcy.
— EAmez

18

Jeśli chcesz załączyć plik w systemie Linux

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

4
Daje invalid headerwiadomość dla mojego załączonego pliku. Prawidłową opcją była wielka litera -A.
— Stephane

3
@Stephane Według patrick-haugh, -a jest przełącznikiem załączników. -A jest dla polecenia konta. Zobacz stronę manuala
— MiaeKim

10

w terminalu na swoim Mac OS lub Linux OS wpisz ten kod

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

na przykład spróbuj tego

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.