Può essere molto utile, in script ad avvio automatico ad esempio per valutare il buon operato dello script stesso, far sì che una mail venga inviata al termine dell’esecuzione dello script oppure, per non riempirsi la mailbox di messaggi automatici, solo in caso di errori.
Oggi mi sono trovato con questo problema su una distribuzione Suse Linux Enterprise Server 10.2, SLES per i più intimi, ed ho risolto egregiamente grazie all’utilizzo di [W:Mutt], che non è un semplice comando da shell anche se è possibile utilizzarlo come tale, ma un vero client di posta elettronica testuale a tutti gli effetti, e pure molto potente.
Io ho trovato Mutt preinstallato sulla SLES, ma ho visto che non è difficile installarlo anche su altre distribuzioni, sia dalle repository ufficiali che dai sorgenti. È possibile installarlo anche su Mac OS X, ma non l’ho ancora provato.
Comunque, dando per buono che Mutt sia installato e funzionante, le modalità per inviare una mail da riga di comando sono alla portata di tutti.
Mail semplice:
echo "Questo diventa il testo della mail posso scriverci quello che mi pare" | mutt -s "Oggetto della mail" indirizzo@destinatario.it
Ovviamente “indirizzo@destinatario.it” deve essere sostituito con l’indirizzo reale del destinatario.
Mail con allegato:
Possiamo osare di più, inviando anche un allegato:
echo "Questo diventa il testo della mail posso scriverci quello che mi pare" | mutt -s "Oggetto della mail" -a /percorso/allegato.zip indirizzo@destinatario.it
Nel mio caso, l’allegato era scomodo e dato che era solo testo volevo che l’allegato, il risultato di un altro comando da terminale salvato su file, diventasse il testo della mail.
Niente di più facile, il comando cambia di poco:
mutt -s "Oggetto della mail" indirizzo@destinatario.it < /percorso/fileditesto.txt
questa ultima variabile comunque non ci vieta di utilizzare comunque l’opzione “-a” per inviare anche un allegato, un file diverso:
mutt -s "Oggetto della mail" -a /percorso/allegato.zip indirizzo@destinatario.it < /percorso/fileditesto.txt
Per scoprire tutte le opzioni di Mutt da riga di comando, e sono parecchie, basta digitare il “solito” man mutt.
Per saperne di più, vi rimando al sito ufficiale di Mutt.
5 risposte
salve,
sono arrivato qui perche’ dopo aver installato un linux minimale su un vecchio eeePC
google si rifiuta di farmi accedere alla posta perche’ trova che il (suo) browser e’ troppo vecchio!! chiaro che una versione piu’ recente non funziona.
il problema e’ che questi proprio non ne vogliono sapere.
non parliamo di altri che mettono banner sopra e a fianco per cui occorre
un display da almeno 15″
Ciao Rodolfo,
i comandi non si comportano allo stesso modo su tutti i sistemi operativi, non so con quale OS hai provato ma prova a dare un’occhio al manuale in linea con il classico comando
per vedere le opzioni disponibili e le eventuali diversità di sintassi.
rob
PS.. ti ho alterato l’indirizzo mail nel tuo commento, altrimenti ti ritrovi pieno di spam 😉
Allora, ho guardato nelle pagine man e (nonostante il mio pessimo inglese) sono riuscito a risolvere. La sintassi che funziona su ubuntu (nel mio caso karmic koala 9.10), è la seguente:
echo “testo del messaggio” | mutt -s “oggetto” -a /percorso/del/file — indirizzo@email.com
In pratica bisognava solo aggiungere i due trattini (–) prima dell’indirizzo email del destinatario. Attenzione, i due trattini devono essere separati dall’indirizzo email.
Trovo molto pratico questo metodo per inviare mail velocemente dal terminale, mi sono fatto anche un comodo script in python per non dover scrivere tutte le volte il comando, inoltre mutt è un client di posta elettronica ricco di funzionalità (assolutamente da provare!).
Ho provato, la mail normale e va, mentre quella con l’allegato no:
echo “mio messaggio” | mutt -s “oggetto” -a /home/rodolfo/immagine.jpg rodolfoxxxxxxx@gmail.com
Impossibile fare stat di rodolfoxxxxxxxx@gmail.com: Nessun file o directory
rodolfoxxxxxxxxxx@gmail.com: impossibile allegare il file.
sembra che voglia allegare l’indirizzo e-mail del destinatario..
Bel sito, complimenti. Mi sono iscritto alla newsletter.