Revista Tecnología

Enviar e-mails con adjuntos desde la terminal con sendmail [Bash script]

Publicado el 15 diciembre 2014 por Gaspar Fernández Moreno @gaspar_fm
votar

Enviar e-mails con adjuntos desde la terminal con sendmail [Bash script]

En varias ocasiones, he necesitado enviar un e-mail a un compañero de trabajo (o a mí mismo) con información recién extraída de un servidor (por ejemplo un CSV de base de datos o información subida desde la web) y lo que he hecho al final ha sido bajármelo por SSH y una vez en mi ordenador he enviado el archivo donde ha sido necesario. Si eres como yo, que siempre tengo una sesión SSH abierta en mi servidor, ganarás un par de minutos con este script.

El siguiente script envía un correo electrónico utilizando sendmail. sendmail no es difícil, simplemente tenemos que escribir como entrada del correo las cabeceras necesarias y el mensaje, aunque podemos echar unos minutos hasta que se puede enviar correctamente el mensaje.
El problema con las cabeceras viene cuando tenemos que enviar archivos adjuntos, ya que las cabeceras que tenemos que enviar son un poco más complejas, y luego tenemos que codificar el archivo para que encaje en un e-mail y es algo que a mano resulta muy pesado.

Pues nada, si salvamos esto como gemail.sh sólo tenemos que hacer lo siguiente:

$ email.sh [email protected] “Asunto del mensaje” “Hola mundo! Te mando un mensaje”

para enviar un mensaje normal, si queremos enviar adjuntos:

$ email.sh [email protected] “Asunto del mensaje” “Hola mundo! Te mando un mensaje” fichero1 fichero2

siempre y cuando existan los archivos, la cosa irá bien, aunque también podemos insertar cabeceras nuevas en el correo, por ejemplo From (para especificar el remitente), CC y BCC (para copias) y Reply-to (para responder a esta dirección), etc. de la siguiente manera:

$ email.sh [email protected] “Asunto del mensaje” “Hola mundo! Te mando un mensaje” “From: Yo mismo ” “CC: [email protected]” fichero1 fichero2…

Siempre y cuando tengamos sendmail configurado, todos los e-mails se enviarán. Si algún e-mail no ha salido, podemos ver en /var/log/mail.log y /var/log/mail.err qué ha pasado con el envío, ya que sendmail se limita a encolar los mensajes, que ya se podrán enviar con el método que tengamos configurado (postfix, nullailer, etc)


GeSHi Error: GeSHi could not find the language sh (using path /home/gaspy/www/totaki.com/www/poesiabinaria/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Este código lo encontráis también en mi Github.

Foto: Esparta Palma (Flickr CC-by)


Volver a la Portada de Logo Paperblog