É provavelmente uma combinação do cliente de e-mail e plataforma em que você está executando.
O ideal é que os anexos permaneçam sempre os mesmos e, se os arquivos forem binários (ou colocados em um contêiner binário, como .zip), não haverá problemas.
O que eu suspeito que está acontecendo é que o aplicativo cliente está inserindo as mensagens de texto sem formatação como anexos com codificação "imprimível entre aspas" em vez de Base64 (que os arquivos binários são codificados como). Para verificar isso, você precisa visualizar os dados da mensagem bruta no aplicativo de e-mail de recebimento:
- No Gmail, isso é "Mostrar original" em o menu ao lado da resposta superior direita botão.
- No Thunderbird, Visualizar - > mensagem Fonte
- Existem provavelmente equivalentes em Correio do Outlook e Java.
Você precisa procurar os anexos, que começam com cabeçalhos como:
--0016e65c71b2a252eb04a3a1f642
Content-Type: text/plain; charset=US-ASCII; name="test.txt"
Content-Disposition: attachment; filename="test.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gnvt3nlf0
Se "Content-Transfer-Encoding" for algo diferente de "base64" (como "quoted-printable"), e você pode ver o conteúdo textual dos arquivos de texto abaixo, então essa é provavelmente a fonte de erro, como os finais de linha provavelmente são normalizados pelo aplicativo de envio quando a mensagem é enviada (a maioria dos emails é enviada como texto simples).
A codificação Base64 converte arquivos binários em texto simples, que podem ser enviados pelo remetente e convertidos de volta ao binário novamente no receptor, e não se atrapalham no mundo do email. Isso é provavelmente o que o Outlook está fazendo para todos os anexos e o que a TB está fazendo pelos arquivos .xml.