Tag Archives: mail

Enviar e-mail desde la consola

Si queremos que nuestro sistema pueda enviar correos electrónicos, debemos asegurarnos de que sendmail o algún otro MTA (Mail Transport Agent) esté configurado. O sea que empezamos ejecutando /etc/init.d/sendmail start, o /etc/rc.d/sendmail start, o service sendmail start, o lo que se corresponda a nuestra distribución GNU/Linux o sistema UNIX que estemos usando. Ahora ya podemos empezar.

Supongamos que estamos delante de una terminal y queremos enviar un mensaje a usuario@dominio.com, la forma más simple es la siguiente, ejecutamos

$ mail usuario@domunio.com

Ahora nos sale lo siguiente:

Subject: Título del mensaje <enter>
Empieza el texto del mensaje, y <enter>
sigue el texto hasta que <enter>
finalmente terminamos y <enter>
escribimos un punto <enter>
. <enter>
Cc: <enter>

Y el mensaje ya se ha enviado a usuario@dominio.com con el título indicado y el mensaje que hemos escrito. Como véis podemos añadir destinatarios adicionales en el campo Cc (Carbon Copy).

Pero, ¿y si queremos mandar un correo sin tener que interactuar en tiempo de envío, por ejemplo para mandar correos desde nuestros propios scripts? Pues todo lo que hemos visto se puede hacer por parámetros:

$ mail -s "Título del mensaje" usuario@dominio.com < /ruta/archivodetexto.txt

En el caso que hemos visto, el texto del mensaje lo recuperamos de un archivo de texto plano ASCII que se llama archivodetexto.txt y se encuentra en /ruta/, pero también podríamos incluir el propio cuerpo del correo en el comando si usamos una tubería:

$ echo "contenido del mensaje" | mail -s "Título del mensaje" usuario@dominio.com usuario4@dominio.com

Además vemos que podemos enviar el mensaje a distintos destinatarios. Pero ¿y si queremos enviar documentos adjuntos? El comando mail, que yo sepa, no puede hacerlo. Para ello podemos recurrir a mutt, un cliente de correo electrónico muy capaz y que posee una interface TUI (Text User Interface). Sin aprofundir en las capacidades de mutt, que son muchas, en este caso podríamos hacer lo siguiente:

$ mutt -s "Título del mensaje" -a /ruta/documento.pdf usuario@dominio.com < /ruta/archivodetexto.txt

En este caso, el usuario que posee el correo electrónico usuario@dominio.com recibirá un correo titulado “Título del mensaje”, el texto de este correo será el contenido de archivodetexto.txt, y se incluirá un PDF, documendo.pdf como archivo adjunto.

Voilà.