¿Cómo envío un archivo como archivo adjunto de correo electrónico usando la línea de comando de Linux?
Creé un script que se ejecuta todas las noches en mi servidor Linux y que utiliza mysqldump
para hacer una copia de seguridad de cada una de mis bases de datos MySQL en archivos .sql y los empaqueta como un archivo .tar comprimido. El siguiente paso que quiero lograr es enviar ese archivo tar por correo electrónico a un servidor de correo electrónico remoto para su custodia. Pude enviar el script sin formato en el cuerpo de un correo electrónico canalizando el archivo de texto de respaldo de la mailx
siguiente manera:
$ cat mysqldbbackup.sql | mailx [email protected]
cat
hace eco del texto del archivo de copia de seguridad que se canaliza al mailx
programa con la dirección de correo electrónico del destinatario pasada como argumento.
Si bien esto logra lo que necesito, creo que podría ser un paso mejor. ¿Hay alguna forma, utilizando scripts de shell o de otro modo, de enviar el archivo .tar comprimido a un mensaje de correo electrónico saliente como archivo adjunto ? Esto evitaría tener que lidiar con mensajes de correo electrónico muy largos que contienen datos de encabezado y que a menudo tienen problemas de ajuste de palabras, etc.
Ninguno de los perros callejeros funcionó para mí. Pensaba que la dirección de correo electrónico era parte del archivo adjunto. Tuve que hacer:
echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
O, en su defecto, perro callejero:
gzip -c mysqldbbackup.sql | uuencode mysqldbbackup.sql.gz | mail -s "MySQL DB" [email protected]
Dependiendo de su versión de Linux, puede llamarse correo. Para citar a @David arriba:
mail -s "Backup" -a mysqldbbackup.sql [email protected] < message.txt
o también:
cat message.txt | mail -s "Backup" -a mysqldbbackup.sql [email protected]