Vimos en el post anterior como enviar un correo desde la linea de comando con swaks, sin embargo esto puede ser algo complicado, por esto resulta conveniente crear un script con el que puedas enviar un correo de forma sencilla y que también te sirva para crear scripts que puedan enviar un correo si algun evento de importancia ocurre en tu servidor o equipo. Aquí te explico como enviar un email desde un script en bash paso a paso.
Como enviar un email desde un script bash con swaks
Enviar un email con swaks no es otra cosa que poner un comando con los parámetros indicados aunque son muchos y resulta algo complejo, así que puedes crear un script para facilitar ese comando y lo haremos de la siguiente forma.
Prerequisitos
Debes tener instalado el paquete swaks, si es que no lo tienes, puedes instalarlo siguiendo los pasos en este post:
Creando el script mandarmail.sh
Los que necesitamos es un script que nos permita indicar los parámetros básicos, por ejemplo, a que cuenta de email lo vamos a enviar, el título del correo y el mensaje que queremos transmitir. Lo anterior se puede definir en un script que se use así:
mandarmail.sh "Titulo del correo" "correo@destino.com" "mensaje"
Esta forma es mas simple y podemos quitar lo complejo se los parámetros de swaks, para implementar este script podemos crear un archivo .sh al que le daremos permisos de ejecución y incluiremos en el el código para recibir los parámetros y luego ejecutar el swaks con los parámetros necesarios para realizar el envío del correo.
Crea un archivo que se llame mandarmail.sh con el siguiente comando:
touch mandarmail.sh
Luego edita el archivo
nano mandarmail.sh
y agrega los comandos para recibir los parámetros y configura el comando swaks con ellos, puedes incluir estos comandos y remplazar los datos necesarios.
#!/bin/bash SUBJECT=$1 RECEIVER=$2 TEXT=$3 SERVER_PORT="tu_servidor_smtp.com:587" SENDER="tu_email@tu_dominio.com" USER="tu_email@tu_dominio.com" PASSWORD="tu_contraseña" swaks --to $RECEIVER --from $SENDER --server $SERVER_PORT --auth LOGIN --auth-user $USER --auth-password $PASSWORD -tls --data "Date: %DATE%\nTo: %TO_ADDRESS%\nFrom: %FROM_ADDRESS%\nSubject: $SUBJECT %DATE%\nX-Mailer: swaks v$p_versionjetmore.org/john/code/swaks/\n%NEW_HEADERS%\n $TEXT \n"
Debes indicar en el script los datos de tu cuenta de email con la que vas a hacer el envío, para esto debes remplazar los datos que están en color verde y por ahí la información correcta, para que tu script funcione.
Una vez que tengas este código en el archivo grábalo con Ctrl+O y sal del editor nano con Ctrl+X. Luego da permiso de ejecución al script con el siguiente comando:
chmod +x mandarmail.sh
y ahora pruebalo mandando un correo de prueba a alguna de tus cuentas de email.
./mandarmail.sh "Prueba de script mandarmail.sh" "tu-email@algo.com" "Texto de prueba del script mandarmail.sh"
Si todo funciona correcto recibirás el correo en la bandeja de entrada de tu cuenta de email a la que enviaste la prueba.
Una vez que tengas este script puedes ubicarlo en alguna ruta que esté incluida en el PATH del sistema para que puedas ejecutarlo desde cualquier usuario o script, y con esto podrás incluir ese comando en algun otro script que necesites o tal vez en algún cron para que te envié un correo cuando algo pase en tu servidor.
Espero que este pequeño script te sea de utilidad, tanto como lo ha sido para mi. No olvides que esta es una forma de hacerlo, pero me gustaría saber como lo haces tu. Déjame tus dudas o comentarios abajo.
Tu Servidor y Amigo
Sígueme en Twitter: @larmedina
Sígueme en Facebook: dame un like LuisMedinaMLM
By George 02/23/2016 - 8:19 am
Hola muy buen manual existe alguna manera de enviar archivo txt o csv adjuntos con esta herramienta he buscado pero no consigo nada gracias
By Luis Armando Medina 02/23/2016 - 12:55 pm
No he probado esta opción sin embargo se puede mediante el parámetro –attach-name [name] el cual se puede repetir cuantas veces se necesite, puedes ver la documentación de SWAKS en esta URL http://www.jetmore.org/john/code/swaks/latest/doc/ref.txt saludos
By Libana Abdul 07/28/2016 - 12:50 pm
Hola muy bueno tu post realmente, pero quisiera consultarte como hago para incluir el to y la descripcion del mensaje dentro del mismo script? ya que lo intento y no lo he logrado. Gracias
By Guillermo 09/04/2017 - 4:42 pm
Muy buena ayuda, queria preguntar como puedo hacer para enviar a varios destinatarios?
By Luis Armando Medina 09/25/2017 - 7:54 am
Solo tienes que agregar las otras direcciones de email separadas por coma. «un-correo@tumail.coom, otromail@tumail.com» Saludos
By BitAciD 05/13/2018 - 4:30 pm
Me salio un mensaje… «-bash: ./enviocorreo.sh: permision denied
Lo probé tambien haciendo sudo su.
By BitAciD 05/13/2018 - 4:34 pm
Con el comando en el bash sin que sea a traves de un ejecutable si pude. Que le puede pasar al .sh, me falta algun permiso? Uso ubuntu Server. Muchas gracias.
By BitAciD 05/13/2018 - 4:42 pm
Me equivoqué con el nombre de archivo al darle los permisos +x… Es lo que tiene ser novato.
By ysaborit 08/07/2018 - 10:01 am
me pase dos dias tratando de hacer esto y con tu explicacion lo logre
gracias desde cuba
By Luis Armando Medina 08/09/2018 - 2:09 pm
Me da gusto que te haya sido util. Saludos ysaborit.