Frecuentemente tengo que enviar la salida de un proceso por correo, como un archivo adjunto.
Utilizo un
agente de correo muy versatil, el
mutt.
Este cliente de correo se puede utilizar en forma interactiva, como los clientes de correo más habituales. Tiene la peculiaridad de ser orientado a consola. Lo que me llevó a considerarlo para enviar adjuntos es la posibilidad de correrlo desde un
shellscript, como salida un
proceso batch.Para eso me cree un archivo de configuración (mutt.rc) personalizado:
#
hdr_order From: Date: To: Cc: Subject:
#
set envelope_from_address="a@domain.com"
#
set from="a@domain.com"
# Utiliza el servidor
set smtp_url="smtp://smtp.server.domain.com"
Las personalizaciones son elementales, la dirección de correo del remitente y un servidor SMTP debidamente configurado. Luego en el shellscript invoco el mutt con esa configuración. Opté por guardar los parámetros en variables, para mejorar la legibilidad y eventualmente re aprovechar el shellscript para otra tarea
MUTT=$(which mutt)
REPORT="/tmp/reporte.csv"
MUTTRC="/home/user/mutt_reportes.rc"
RECIPIENTS="a@domain.com b@domain.com"
SUBJECT="REPORTYE DIARIO"
${MUTT} -F ${MUTTRC} -s "${SUBJECT}" -a ${REPORT} -- ${RECIPIENTS}
La ventaja de usar un agente reconocido como el mutt, en lugar scripts
ad hoc, esta a la hora de atravesar filtros antispam y antivirus. Estos filtros suelen dar puntaje negativo a correos con cabezales mal formados o provenientes de agentes desconocidos o poco conocidos.
Actualización 21/Oct/2013
Mutt tiene incorporado el cliente nativo SMTP a partir de la versión 1.5.15. Esta salvedad es importante, especialmente para quienes tienen que dar soporte en equipos Linux viejos o en UNIXes (AIX,Solaris). En AIX esta disponible la versión 1.4.2 en RPM.