/usr/bin/mail não interpreta novas linhas

/usr/bin/mail não interpreta novas linhas

Eu tenho um problema estranho ao enviar um gato para o correio.

Eu tenho um arquivo de texto simples que foi compilado a partir de um script, que é um relatório sobre quais pastas foram copiadas no script. Desejo então enviar este relatório por e-mail aos administradores do sistema.

O script gera o relatório perfeitamente. Quando eu corro

cat /tmp/report.txt

Obtenho uma saída bem formatada com todas as quebras de linha que esperaria.

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

No entanto, por alguma razão, quando agora envio isso para o correio

cat /tmp/report.txt | mail -s "Copy Report" [email protected]

ou

mail -s "Copy Report" [email protected] < /tmp/report.txt

Este é o e-mail que recebo.

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

O que da? Algumas quebras de linha existem, outras não! Tentei editar o arquivo no vi e no nano e garanti que as quebras de linha estavam realmente lá. Também os excluí e os criei novamente e a saída do e-mail permanece a mesma.

Usando /usr/bin/mail

Mais informações:

Digitei manualmente o seguinte em um arquivo de texto e fiz o mesmo canal para enviar. Coloquei a palavra “Copiar” no início de cada linha.

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

Isto é o que recebi no e-mail:

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

Em seguida, removi todas as palavras "Copiar". Isto é o que recebi no e-mail.

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

Achei que poderia ter algo a ver com a palavra Copiar, mas ainda tenho uma linha sem quebra de linha!

Esta é a saída 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$

Responder1

Você provavelmente está sofrendo do problema "format=flowed"recursointroduzido há muito tempo, vejarfc2646.

Você provavelmente descobrirá que algumas linhas possuem um caractere de espaço à direita. Isso é interpretado por alguns leitores de e-mail como significando "concatenar esta linha com a próxima e, em seguida, refazer o contorno do texto para que as linhas caibam na largura da tela".

Normalmente, isso só deve ser feito se o seu e-mail tiver a Content-Typeopção header format=flowed, mas hoje em dia, devido à multidão não-Unix, isso se tornou um padrão.

Use cat -vetem seus dados para ver se há espaços à direita. Use sed 's/ \+$//'para removê-los.


Não vi nenhum espaço à direita, nem caracteres de controle, nem retornos de carro em seus dados, portanto, não há desculpa real para sua mala direta adulterá-los.

Uma última tentativa: como sugeriu Andrzej A. Filip, em vez de mailir direto para sendmail. Isso permitirá que você adicione um cabeçalho de tipo de conteúdo explícito. Por exemplo:

(echo 'Subject: Copy Report'
 echo 'Content-Type: text/plain; charset=us-ascii; format=fixed'
 echo
 cat /tmp/report.txt
) |  sendmail [email protected]

A última echoé encerrar os cabeçalhos antes dos dados. sendmail pode não estar no seu PATH, procure em /sbin e /usr/sbin e assim por diante.

informação relacionada