Tengo un problema extraño al enviar un gato al correo.
Tengo un archivo de texto simple que se compiló a partir de un script, que es un informe sobre las carpetas que se copiaron en el script. Luego quiero enviar este informe por correo electrónico a los administradores del sistema.
El script genera el informe perfectamente. cuando corro
cat /tmp/report.txt
Obtengo resultados bien formateados con todos los saltos de línea que esperaría.
Copy report. Started on Mon Sep 28 13:37:57 BST 2015
Run in progress?: Yes
3 directories were copied.
Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps
Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)
Copy completed on 2015.09.28 at 13:37:59
Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps
Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)
Copy completed on 2015.09.28 at 13:38:01
Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps
Sin embargo, por alguna razón, cuando envío esto al correo
cat /tmp/report.txt | mail -s "Copy Report" [email protected]
o
mail -s "Copy Report" [email protected] < /tmp/report.txt
Este es el correo electrónico que recibo.
Copy report. Started on Mon Sep 28 13:37:57 BST 2015
Run in progress?: Yes
3 directories were copied.
Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps
Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14) Copy completed on 2015.09.28 at 13:37:59 Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps
Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18) Copy completed on 2015.09.28 at 13:38:01 Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps
¿Lo que da? ¡Algunos saltos de línea están ahí, otros no! Intenté editar el archivo tanto en vi como en nano y me aseguré de que los saltos de línea estuvieran realmente allí. También los eliminé y los volví a crear y el resultado del correo electrónico sigue siendo el mismo.
Usando /usr/bin/correo
Informacion adicional:
Escribí a mano lo siguiente en un archivo de texto e hice lo mismo para enviar el correo. Puse la palabra "Copiar" al comienzo de cada línea.
Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
Copy 0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
Copy 0inputs+355896outputs (0major+150minor)pagefaults 0swaps
Esto es lo que recibí en el correo electrónico:
Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps
Luego eliminé todas las palabras "Copiar". Esto es lo que recibí en el correo electrónico.
Started on 2015.09.29 at 09:46:49
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Completed on 2015.09.29 at 09:46:49
Info:
0.00user 0.46system 0:01.98elapsed 23%CPU (0avgtext+0avgdata 2552maxresident)k
0inputs+355896outputs (0major+149minor)pagefaults 0swaps
Pensé que podría tener algo que ver con la palabra Copiar, ¡pero todavía tengo una línea sin salto de línea!
Esta es la salida decat -vet /tmp/report.txt
Copy report. Started on Mon Sep 28 13:37:57 BST 2015$
$
Run in progress?: Yes$
$
$
$
3 directories were copied.$
$
$
Copy started on 2015.09.28 at 13:37:57$
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)$
Copy completed on 2015.09.28 at 13:37:57$
Copy info:$
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k$
0inputs+355896outputs (0major+150minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:37:59$
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)$
Copy completed on 2015.09.28 at 13:37:59$
Copy info:$
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k$
0inputs+355896outputs (0major+152minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:38:01$
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)$
Copy completed on 2015.09.28 at 13:38:01$
Copy info:$
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k$
0inputs+355896outputs (0major+151minor)pagefaults 0swaps$
Respuesta1
Probablemente estés sufriendo del "formato=fluido"característicaintroducido hace mucho tiempo, verrfc2646.
Probablemente encontrará que algunas líneas tienen un carácter de espacio al final. Algunos lectores de correo interpretan que esto significa "concatenar esta línea con la siguiente y luego rehacer el ajuste del texto para que las líneas se ajusten al ancho de la pantalla".
Normalmente, esto sólo debe hacerse si su correo tiene la Content-Type
opción de encabezado format=flowed
, pero hoy en día, debido a la multitud que no utiliza Unix, esto se ha convertido en un valor predeterminado.
Úselo cat -vet
en sus datos para ver si hay espacios finales. Úselo sed 's/ \+$//'
para eliminarlos.
No vi espacios finales ni caracteres de control ni retornos de carro en sus datos, por lo que no hay excusa real para que su remitente los manipule.
Un último intento: como sugirió Andrzej A. Filip, en lugar de mail
ir directamente a sendmail
. Esto le permitirá agregar un encabezado de tipo de contenido explícito. P.ej:
(echo 'Subject: Copy Report'
echo 'Content-Type: text/plain; charset=us-ascii; format=fixed'
echo
cat /tmp/report.txt
) | sendmail [email protected]
Lo último echo
es finalizar los encabezados antes de los datos. Es posible que sendmail no esté en su RUTA, busque en /sbin y /usr/sbin, etc.