Come inviare e-mail dal terminale?


169

So che ci sono modi per inviare e-mail dal terminale in Linux / MacOS, ma non riesco a trovare la documentazione corretta su come farlo.

Fondamentalmente ne ho bisogno per il mio script bash che mi avvisa ogni volta che c'è un cambiamento in un file.


3
Dovrebbe probabilmente essere notato qui che alcuni host e ISP "disattivano" la possibilità di inviare e-mail. Presumo sia un tentativo di impedire alle persone di inviare spam e phishing attraverso di loro
Jim Jeffries,

@JimJeffries Quali? Sto usando un server web Amazon EC2.
ckjbgames,

Risposte:


125

Vai su Terminale e digita man mailaiuto.

Dovrai impostare SMTP:

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

Guarda anche:

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

Per esempio:

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

Questo invierà una e-mail example@example.comcon l'oggetto helloe il messaggio

Ciao

Mondo


Ho appena provato, e ha funzionato per me, ma ho due domande per mia curiosità. Cosa significa <<, online ho visto alcuni esempi con '<' o '<<. ' A cosa serve? E perché hai fornito End Of File lì e alla fine del messaggio?
Profondo

"<< EOF" e "EOF" contrassegnano un "documento qui". Il testo tra i due EOF viene trattato come una stringa quotata su più righe. È descritto in "man bash"
Joe Inwap,

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

20
Nota tutte queste soluzioni presuppongono che tu abbia un MTA installato localmente
Miquel,

11
@Miquel buon punto. In Ubuntu è possibile ottenere i prerequisiti tramite sudo apt-get install mailutils.
Earldouglas,

3
@James, non funziona per il mio MAC (((Potresti aiutarmi?
Neo

1
Tutorial passo passo: rianjs.net/2013/08/…
Dušan Maďar

Strano. Questo mi dà un messaggio "SintassiErrore: sintassi non valida" anche se l'unica modifica che ho fatto è stata la modifica dell'indirizzo.
Jewenile,

41

Se ti serve solo una riga dell'oggetto (come in un messaggio di avviso), fai semplicemente:

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

Potrebbe essere necessario installare mailutils. Può essere installato tramite un gestore di pacchetti (ad es. apt install mailutils)
Jeevan Takhar

31

Probabilmente il modo più semplice è usare curlper questo, non è necessario installare alcun pacchetto aggiuntivo e può essere configurato direttamente in una richiesta.

Ecco un esempio usando il server smtp di gmail:

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

Questa è davvero un'ottima opzione. Puoi generare una password specifica per l'app per il tuo account Google e questo recapita semplicemente l'email dal tuo account. Molto bello!
dakdad,

2
Ottima risposta, infine non dimenticare di attivare l'app meno sicura per far funzionare myaccount.google.com/lesssecureapps
yubaraj poudel

@aliaksandr dovrebbe aggiungere quest'ultimo punto alla sua risposta. Per impostazione predefinita questa opzione (concedi l'accesso ad app meno sicure) è disabilitata e non è evidente. Almeno se stai utilizzando l'account Gmail come e-mail del mittente.
EAmez,

18

Se si desidera allegare un file su Linux

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

4
Fornisce un invalid headermessaggio per il mio file allegato. L'opzione corretta era maiuscola -A.
Stephane,

3
@Stephane Secondo patrick-haugh, -a è l'interruttore di collegamento. -A è per il comando account. Vedi la pagina man: linux.die.net/man/1/mailx
MiaeKim

10

nel terminale sul tuo Mac OS o Linux OS digitare questo codice

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

per un esempio, prova questo

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.