Alimentações de linha (0x0A) transformadas em retornos de carro (0x0D) durante a transferência de arquivos por email

1

Estou enviando um arquivo por e-mail de um Mac (Snow Leopard) para outro Mac (Lion).

Acontece que todos os feeds de linha (0x0A) no arquivo se transformam em retornos de carro (0x0D), transformando efetivamente o arquivo original em um arquivo completamente diferente.

Alguma idéia de por que algo assim aconteceria?

Isso não acontece quando o remetente faz o upload do arquivo para a web, e o destinatário faz o download do arquivo usando seu navegador da web. Também não acontece se o remetente primeiro ZIPs o arquivo e envia via e-mail; o destinatário obtém o arquivo original intacto depois de descompactar o arquivo ZIP. Há algo especial sobre as transferências de e-mail que eu deveria saber?

    
por Enchilada 01.12.2011 / 15:10

3 respostas

2

Não há nada de especial sobre as transferências de e-mail que você deve conhecer.

A função normal de um cliente de email ao transmitir o arquivo é transmitir como está. A codificação do arquivo usando base64 ou qualquer outra coisa não deve implicar qualquer alteração no conteúdo do arquivo.

Evidentemente, o seu cliente de email está a fazer o seu trabalho. Ele não apenas analisou o arquivo e decidiu que ele contém texto, ele também se encarregou de normalizar o fim das linhas. Infelizmente, está arruinando o trabalho.

De acordo com Wikipedia , o carriage-return é um caractere Newline para Mac OS até a versão 9. Certamente não deveria ser o caso do Snow Leopard.

Não estando em um Mac, não posso testar nada. E como não sei qual cliente de e-mail está sendo usado, Eu não posso google para o problema. Então eu sugiro que você olhe para esse cliente de e-mail desconhecido configurações e tente encontrar alguma opção de compatibilidade com o OS-9 que foi ativada por engano, ou alguma outra configuração para transmitir arquivos como estão.

    
por 06.12.2011 / 17:45
2

O SMTP RFC2821, Seção 2.3.7 (encontrado aqui ) declara o seguinte:

SMTP commands and, unless altered by a service extension, message data, are transmitted in "lines". Lines consist of zero or more data characters terminated by the sequence ASCII character "CR" (hex value 0D) followed immediately by ASCII character "LF" (hex value 0A).

Portanto, o seu MUA DEVE convertê-los antes de enviar através do servidor SMTP. Lembre-se de que o SMTP foi projetado para dados de texto e, portanto, não é compatível com binário (consulte a codificação base64 para obter mais informações sobre o envio de dados binários)

    
por 01.12.2011 / 15:28
1

Ou zip, tar, gzip, bzip ou alguma combinação desses antes de enviar o arquivo ou encontrar outro cliente de email. Claramente, o que você está usando está fazendo muito trabalho.

    
por 06.12.2011 / 19:02