Problema de EOL (fim de linha) do anexo de correio

2

Estou enviando uma mensagem simples no Windows XP com 4 anexos:

  • dummy.txt (fim da linha: CRLF)
  • dummy.xml (fim da linha: CRLF)
  • dummyjustlf.txt (fim da linha: LF)
  • dummyjustlf.xml (fim da linha: LF)

De acordo com o cliente, estou enviando o e-mail com a mudança de término de linha:

  • Outlook '07: os EOLs permanecem inalterados
  • Thunderbird 3: EOL de dummyjustlf.txt é alterado para CRLF, outros permanecem inalterados
  • Java Mail: EOL de dummyjustlf.txt e dummyjustlf.xml alterado para CRLF, outros permanecem inalterados

Como este comportamento é especificado? Existem RFCs documentando isso? O cliente decide como enviar ou receber as mensagens com os anexos e converter a EOL como quiser?

    
por timbooo 19.05.2011 / 14:41

1 resposta

4

É 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.

    
por 19.05.2011 / 17:00