GNU/Linux >> Linux Esercitazione >  >> Linux

Invia e-mail dal terminale linux o dallo script usando il comando mail

Esistono altri client da riga di comando basati su terminale che possono essere utilizzati anche per inviare e-mail come sendmail, mutt, SSMTP, telnet, ma in questa guida ci concentreremo sulla mail comando.

Il comando mail richiama il binario standard sendmail (/usr/sbin/sendmail) che a sua volta si connette all'MTA locale per inviare la posta alla sua destinazione. L'MTA locale è un server smtp in esecuzione locale che accetta messaggi sulla porta 25.

Ciò significa che un server smtp come Postfix dovrebbe essere in esecuzione sulla macchina in cui si intende utilizzare il comando mail. Se nessuno è in esecuzione, viene visualizzato il messaggio di errore "send-mail:Cannot open mail:25".

Installazione

Installa con questo comando:

Per Ubuntu

sudo apt-get install mailutils 

Per centos 7

sudo yum install -y mailx

Per centos 8/Alma Linux/Rhel

sudo dnf install -y mailx

Verifica che il comando sia stato installato correttamente con questo comando:

mail

Il comando precedente controlla se è presente un'e-mail per l'utente corrente. Dovresti vedere un output come questo:

➜ mail
No mail for centos

Utilizzo

Invio di e-mail semplici

Usa questo comando per inviare un'email a [email protected] . Il -s argomento della riga di comando serve per specificare l'oggetto.

mail -s "Test mail" [email protected]

Il comando sopra si bloccherà dopo aver premuto invio in attesa che tu scriva il tuo messaggio. Quando hai finito usa Ctrl-D per notificare al client di posta che hai finito e che l'e-mail è pronta per l'invio.

❯ mail -s "Test mail" [email protected]
Hey John,

Please remember to send me the Linux Book.

Regards,
Me.
EOT

Il EOT è stato inserito quando ho premuto Ctrl-D . Una volta che lo fai, il comando mail invierà il messaggio per la consegna e fatto.

Invia messaggio con contenuto da un file

Usa questo comando per inviare un messaggio dal file /path/to/file.txt .

mail -s "Test mail" [email protected] < /path/to/file.txt

Puoi anche usare questa fodera in cui fai eco al contenuto da inviare e poi invialo al comando mail.

echo "Hello world" | mail -s "Test mail" [email protected]

Invia un'e-mail a più destinatari

Per inviare un'e-mail a più destinatari, puoi utilizzare un elenco di e-mail separato da virgole come in questo esempio:

echo "Hello world" | mail -s "Test mail" [email protected],[email protected]

Aggiunta di destinatari CC e BCC

È inoltre possibile allegare l'indirizzo della copia nascosta (BCC) e della copia carbone (CC). Usa -c <email> per CC e -b <email> per ccc.

Questo esempio specifica CC e BCC:

echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]

Specifica da nome e indirizzo

Puoi usare l'opzione -r per specificare il nome e l'indirizzo da cui si vede di seguito:

echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]

In alternativa, puoi usare -a per aggiungere un'intestazione aggiuntiva da allegare al messaggio. Ecco un esempio di come fornire FROM come parte di ciò.

echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]

Per specificare il nome da, utilizzare la seguente sintassi:

echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>

Si noti che dobbiamo sfuggire alle frecce meno e grandi poiché hanno un significato speciale per il prompt della shell. Quando esegui il comando dall'interno di uno script, lo ometteresti.

Specifica l'indirizzo "Rispondi a"

Usa la replyto per specificare la risposta all'indirizzo come in questo esempio:

echo "Hello world" | mail -s "Test mail" [email protected] [email protected]

E-mail con allegato

Invia un'email da [email protected] a [email protected] con un allegato.

mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,

Please find the file requested attached.

Kind Regards,
John.
EOF

E-mail a un utente del sistema locale

Per inviare un'e-mail a un utente del sistema locale, specificare solo il nome utente al posto del destinatario. Puoi aggiungere il nome host ma non è necessario usando @hostname .

mail -s "Test Subject" username 

Abilitazione dettagliata

Se devi controllare cosa sta succedendo mentre l'email viene elaborata, abilita l'output dettagliato con arg -v . Questo è utile per la risoluzione dei problemi come quando si desidera controllare i comandi SMTP utilizzati dal comando mail. Ecco un esempio:

mail -v -s "Hello theere" [email protected] <<< 'This is the message' 

Linux
  1. Il modo più semplice per inviare posta con allegato immagine dalla riga di comando utilizzando Gmail?

  2. Come inviare e-mail HTML utilizzando il comando "posta" di Linux?

  3. 9 esempi di comandi mail/mailx per inviare e-mail dalla riga di comando su Linux

  4. Come utilizzare SSMTP per inviare un'e-mail dal terminale Linux

  5. Come faccio a inviare e-mail dalla riga di comando?

4 comandi per spegnere Linux dal terminale

Tutorial sull'utilizzo dell'ultimo comando nel terminale Linux

Invia e-mail in Linux dalla riga di comando

Utilizzo di cut su terminale Linux

Mutt, Mail e Telnet – Invia e-mail dalla riga di comando o dal terminale di Linux

Come inserire una nuova riga nell'e-mail usando il comando linux mail?