Pode ser um pouco densa para ler, mas a seção Content-Transfer-Encoding do RFC 1341 tem todos os detalhes: O kinda situação vai de mal a pior. Heres meu resumo: Background SMTP, por definição (RFC 821), limita o correio para linhas de 1000 caracteres de 7 bits cada. Isso significa que nenhum dos bytes que você envia para baixo o pipe pode ter o bit mais significativo (de ordem superior) definido como 1. O conteúdo que nós queremos enviar, muitas vezes não obedecer esta restrição inerentemente. Pense em um arquivo de imagem ou em um arquivo de texto que contenha caracteres Unicode: os bytes desses arquivos geralmente terão seu 8o bit definido como 1. O SMTP não permite isso, então você precisa usar a codificação de transferência para descrever como você trabalhou em torno da incompatibilidade . Os valores para o cabeçalho Content-Transfer-Encoding descrevem a regra que você escolheu para resolver esse problema. 7Bit Codificação 7bit significa simplesmente que os Meus dados consistem apenas de caracteres US-ASCII, que só utilizam os 7 bits inferiores para cada carácter. Você basicamente garante que todos os bytes em seu conteúdo já aderem às restrições de SMTP, e por isso não precisa de tratamento especial. Você pode apenas lê-lo como-é. Note que quando você escolhe 7bit. Você está concordando que todas as linhas em seu conteúdo são menos de 1000 caracteres de comprimento. Enquanto seu conteúdo adere a estas regras, 7bit é a melhor codificação de transferência, uma vez que não há nenhum trabalho extra necessário, basta ler / escrever os bytes à medida que saem da tubulação. Seu também fácil de globo ocular 7bit conteúdo e fazer sentido dele. A idéia aqui é que se você está apenas escrevendo em texto simples Inglês você estará bem. Mas isso não era verdade em 2005 e não é verdade hoje. 8Bit Encoding 8bit means Meus dados podem incluir caracteres ASCII estendidos, eles podem usar o 8º bit (mais alto) para indicar caracteres especiais fora dos caracteres padrão de 7 bits do US-ASCII. Como com 7bit. Ainda há um limite de linha de 1000 caracteres. 8bit. Apenas como 7bit. Não faz realmente qualquer transformação dos bytes como theyre escrito para ou ler a partir do fio. Isso significa apenas que você não está garantindo que nenhum dos bytes terá o bit mais alto definido como 1. Isso parece um passo acima de 7 bits. Desde que lhe dá mais liberdade em seu índice. No entanto, RFC 1341 contém este tidbit: A partir da publicação deste documento, não existem transportes Internet padronizados para os quais é legítimo incluir não codificado de 8 bits ou dados binários em corpos de correio. Assim, não há circunstâncias em que o 8bit ou binário Content-Transfer-Encoding é realmente legal na Internet. RFC 1341 saiu há mais de 20 anos. Desde então, weve obtido 8bit MIME Extensions em RFC 6152. Mas mesmo assim, linha limites ainda podem aplicar: Note que esta extensão não eliminar a possibilidade de um servidor SMTP limitando linha comprimento servidores são livres para implementar esta extensão, mas ainda definir um comprimento de linha Limite não inferior a 1000 octetos. Binário Encoding binário é o mesmo que 8bit. Exceto que não há nenhuma restrição de comprimento de linha. Você ainda pode incluir qualquer personagem que você quiser, e não há nenhuma codificação extra. Semelhante a 8bit. RFC 1341 afirma que não é realmente uma legítima codificação de codificação de transferência. RFC 3030 estendeu isso com BINARYMIME. Quoted Printable Antes da extensão 8BITMIME, precisava haver uma maneira de enviar conteúdo que não poderia ser 7bit sobre SMTP. Arquivos HTML (que podem ter mais de 1000 caracteres de linhas) e arquivos com caracteres internacionais são bons exemplos disso. A codificação quoted-printable (Definido na seção 5.1 do RFC 1341) foi projetada para lidar com isso. Ele faz duas coisas: Define como escapar de caracteres não-US-ASCII para que eles possam ser representados em apenas caracteres de 7 bits. (Versão curta: eles são exibidos como um sinal de igual a mais dois caracteres de 7 bits.) Define que as linhas não serão maiores que 76 caracteres e que as quebras de linha serão representadas usando caracteres especiais (que são então escapados). Citado Printable, por causa das fugas e linhas curtas, é muito mais difícil de ler por um humano de 7bit ou 8bit. Mas suporta uma gama muito maior de conteúdos possíveis. Codificação Base64 Se os seus dados são em grande parte não-texto (ex: um arquivo de imagem), você não tem muitas opções. 7bit está fora da mesa. 8bit e binário foram sem suporte antes da extensão MIME RFCs. Quoted-printable funcionaria, mas é realmente ineficiente (cada byte vai ser representado por 3 caracteres). Base64 é uma boa solução para este tipo de dados. Ele codifica 3 bytes brutos como 4 caracteres US-ASCII, o que é relativamente eficiente. RFC 1341 ainda limita o comprimento da linha de base64-codificado dados para 76 caracteres para caber dentro de uma mensagem SMTP, mas isso é relativamente fácil de gerenciar quando você está apenas dividindo ou concatenar caracteres arbitrários em comprimentos fixos. A grande desvantagem é que base64-codificado dados é praticamente totalmente ilegível por seres humanos, mesmo que o seu texto apenas por baixo.
No comments:
Post a Comment