Volver

Linux

Mandar correo desde la línea de comandos.

mutt


En un anterior artículo había mandado un correo desde la línea de comandos utilizando curl.
Ante la imposibílidad de mandar adjuntos mediante curl ( yo no lo he podido conseguir ) , he buscado otras soluciones, y he encontrado mutt que está bastante extendido.
Lo primero es instalar el paquete mutt.
    apt install mutt
Creamos los ficheros de configuración.
    mkdir -p ~/.mutt/cache/headers
    mkdir ~/.mutt/cache/bodies
     touch ~/.mutt/certificates
Creamos el archivo de configuración.
    touch ~/.mutt/muttrc
Editamos el fichero de configuración según nuestro servidor de correos.
En mi caso utilizo leafpad como editor.
     leafpad ~/.mutt/muttrc

En mi caso (GMAIL) la configuración del servidor es la siguiente
set ssl_starttls=yes
set ssl_force_tls=yes
 
set imap_user = 'CORREO_ORIGEN@gmail.com'
set imap_pass = 'CONTASEÑA'
 
set from='
CORREO_ORIGEN@gmail.com'
set realname='seta43'
 
set folder = imaps://imap.gmail.com/
set spoolfile = imaps://imap.gmail.com/INBOX
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
 
set header_cache = "~/.mutt/cache/headers"
set message_cachedir = "~/.mutt/cache/bodies"
set certificate_file = "~/.mutt/certificates"
 
set smtp_url = 'smtps://
CORREO_ORIGEN@gmail.com:CONTASEÑA@smtp.gmail.com:465/'
 
set move = no
set imap_keepalive = 900




El correo mandado será desde un archivo de texto, que en este caso se llama tarea23_59.txt .
Además se mandan los 3 ficheros adjuntos  gra1.png , gra2.png y datos.txt.

El fichero modelo del correo tiene el siguiente formato:
tarea23_59.txt
ESTADISTICAS DEL DIA
vie may 31 08:37:58 CEST 2019





Se crea script donde a partir de un modelo de correo, solo cambio la última línea donde inserto la fecha.
/home/seta/tareas/tarea1.sh
#!/bin/bash
datecreated=`date`

cd $HOME/tareas

sed -i '$d' tarea23_59.txt
echo
$datecreated >> tarea23_59.txt

mutt -s "temperaturas"  CORREO_DESTINO.com < tarea23_59.txt -a $HOME/www/webcam/gra1.png  -a $HOME/www/webcam/gra2.png  -a $HOME/www/webcam/datos.txt


Ya tenemos el script creado, pero nos falta que el script se ejecute a las 23:59.
Para esta tarea utilizaremos cron.  El comando cron es un administrador regular de procesos en segundo plano que viene de serie en linux.
Para añadir el comando que se debe ejecutar en segundo plano, utilizaremos el comando crontab -e  .
Y editaremos de la siguiente forma:

59 23 * * * /home/seta/tareas/tarea23_59.sh >/dev/null 2>&1

De esta forma el script se ejecutará a las 23:59 .


Saludos
Juan Galaz

Bibliografía:
https://www.garron.me/es/gnu-linux/correo-linea-commands-gmail-mutt.html
https://ubunlog.com/mutt-cliente-correo-terminal/