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.