MIME

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
Disambig grey.svg Nota: Se procura por outras acepções, veja Mime.
Text document with red question mark.svg
Este artigo ou secção contém fontes no fim do texto, mas que não são citadas no corpo do artigo, o que compromete a confiabilidade das informações (desde março de 2011). Ajude a melhorar este artigo inserindo fontes.

Extensões Multi função para Mensagens de Internet (sigla MIME do inglês Multipurpose Internet Mail Extensions) é uma norma da internet para o formato das mensagens de correio eletrônico. A grande maioria das mensagens de correio eletrônico são trocadas usando o protocolo SMTP e usam o formato MIME. As mensagens na Internet tem uma associação tão estreita aos padrões SMTP e MIME que algumas vezes são chamadas de mensagens SMTP/MIME.

O protocolo básico de transmissão de e-mail pela Internet, SMTP, suporta apenas 7-bit de caracteres ASCII. Isto limita as mensagens de emails, incluindo somente os caracteres usados na língua inglesa.

O MIME provê mecanismos para o envio de outros tipos de informações por e-mail, incluindo caracteres não utilizados no idioma inglês, usando codificações diferentes do ASCII, assim como formatos binários contendo imagens, sons, filmes, e programas de computador. MIME é também um componente fundamental de comunicação de protocolos como o HTTP, que requer que os dados sejam transmitidos em contextos semelhantes a mensagens de email, mesmo que o dado a ser transmitido não seja realmente um e-mail.

O mapeamento de mensagens dentro e fora do formato MIME é tipicamente utilizado pelos clientes de email ou pelos servidores de email quando enviam ou recebem emails via SMTP/MIME.

O formato básico de e-mail é definido pela RFC 2822, que atualiza a versão RFC 822.

Estes padrões especificam os formatos familiares para o cabeçalho dos e-mails e o corpo e as regras que pertencem aos campos geralmente usados do cabeçalho como "Para:", "Assunto:", "De:" e "Data:".

O MIME define uma coleção de cabeçalhos do e-mail para especificar atributos adicionais de uma mensagem incluindo o tipo de caractere do texto e dos arquivos (ficheiros) de transferência que podem ser usados para representar dados binários 8-bit usando caracteres de 7-bit ASCII. O MIME é extensivo, as suas definições incluem métodos para registrar novos conteúdos e valores.

Os objetivos da definição do MIME não eram mudanças aos usuários de e-mail. Este objetivo é conseguido permitindo que todos os atributos da mensagem do MIME sejam opcionais, com os valores padrões que fazem uma mensagem não-MIME, provavelmente, capaz de ser interpretada corretamente por um cliente MIME.

Cabeçalhos MIME[editar | editar código-fonte]

Versão MIME[editar | editar código-fonte]

A presença deste cabeçalho indica que a mensagem tem o formato MIME. Tipicamente, o valor é "1.0"; portanto, este cabeçalho aparece como

  MIME-Version: 1.0

Tipos de conteúdos[editar | editar código-fonte]

Tipos de conteúdo são identificados no cabeçalho da mensagem ("header") como Content-Type, que indica o type (tipo) e subtype (subtipo) do conteúdo da mensagem, p. ex.:

  Content-type: text/plain

A combinação de tipo e subtipo é geralmente chamada MIME type, embora nas aplicações mais modernas o Internet media type seja o termo favorito, indicando a sua aplicação fora das mensagens MIME. Um grande número de formatos de ficheiro registrou o MIME type. Qualquer tipo de texto tem um parâmetro charset que pode ser incluído para indicar a codificação de caracter. Uma grande quantidade de tipos de letra registraram nomes de charset MIME.

Embora originalmente definido por MIME e-mail, o cabeçalho conteúdo-tipo e o tipo MIME de registro é reutilizado em outros protocolos de Internet, como HTTP. O tipo de registro MIME é administrado por IANA.

Através do uso do tipo multipart, MIME permite mensagens com vários tipos de construções em árvore, onde os nós da folha são qualquer tipo de mensagem multipart e os nós não-folha são alguma variante do tipo multipart. Veja alguns mecanismos suportados:

  • Textos simples usando text/plain (este é o valor padrão para o "Content-type:")
  • Texto com arquivos (ficheiros) anexos (multipart/mixed com uma parte text/plain e outra não-textual). Uma mensagem MIME incluindo um arquivo anexo geralmente é indicada o nome original do anexo no "Content-disposition:" dentro do cabeçalho.
  • Respostas com anexos originais (multipart/mixed com uma parte text/plain e a mensagem original como um MIME message/rfc822)
  • Conteúdo alternativo, é usado quando uma mensagem é enviada em texto simples e, por exemplo, um cliente de email a transforma em HTML para o destino, o MIME será (multipart/alternative com o mesmo conteúdo do texto simples em text/plain mas o MIME transformado em text/html)
  • Muitas outras construções de mensagens.

Codificação de conteúdo de transferência[editar | editar código-fonte]

Codificação de conteúdo de transferência são identificados como Content-Transfer-Encoding. MIME (RFC 2045) define uma gama de métodos para a representação de dados binários em formato texto ASCII. O content-transfer-encoding: no header indica o método a ser utilizado. A RFC e a lista da IANA são quem define os tipos de codificações de transferência:

  • Uso apropriado com SMTP normal:
    • 7bit - acima de 998 octetos por linha na variação de [1..127] com CR e LF (códigos 10 e 13) reservado somente para aparecer como a parte de uma linha final de CRLF. Este é o valor padrão.
    • quoted-printable - usado para textos simples com caracteres US-ASCII.
    • base64 - usado para dados binários arbitrários.
  • Uso apropriado com servidores SMTP que suportam transporte 8BITMIME:
    • 8bit - acima de 998 octetos por linha CR e LF (códigos de 10 e 13) reservado somente para aparecer como a parte de uma linha final de CRLF.
  • Não apropriado para uso com SMTP:
    • binário - seqüência de octetos. Não usado com e-mails SMTP.

Não há nenhuma codificação definida que é projetada explicitamente para dados binários arbitrários com transporte 8BITMIME, assim a base64 ou quoted-printable são às vezes ainda utilizados.

Palavra codificada[editar | editar código-fonte]

Desde a RFC 2822, os nomes e valores dos headers das mensagens são sempre caracteres ASCII. Valores que contenham caracteres não-ASCII são denominados encoded-word pelo MIME, ficando com a sintaxe da RFC 2047 em vez da frase literal. Esta sintaxe usa a string de caracteres ASCII para indicar o tipo de codificação de caracter original, ou seja, o "charset" e o "content-transfer-encoding" usado para o mapa de bytes do charset dentro dos caracteres ASCII.

A forma é: "=?charset?encoding?encoded text?=".

  • O charset é frequentemente utf-8, mas pode ser qualquer caracter registrado com a IANA. iso-2022-jp é comum no Japão. iso-8859-1 e mais recentemente iso-8859-15 são comuns no leste europeu.
  • encoding pode ser um "Q" denotando a codificação da quoted-printable ou "B" que denota a codificação base64.
  • encoded text (codificação do texto) é o texto da "quoted-printable" ou de "base64-encoded".

Por exemplo,

Subject: =?utf-8?Q?=C2=A1Hola,=20se=C3=B1or!?=

é interpretado como "Subject: ¡Hola, señor!".

O formato da palavra codificada ("encoded-word") não é usado nos nomes do cabeçalho, somente no Subject: (Título). Todo o texto do cabeçalho é sempre escrito em Inglês . Quando a mensagem não está em inglês, o cabeçalho é traduzido pelo cliente de e-mail.

Exemplo de Multipart[editar | editar código-fonte]

Um MIME com mensagem multipart contém um "boundary" (literalmente, um "limite") no "Content-type:" do header; este boundary, é colocado entre as partes, no começo e no fim do corpo da mensagem, como segue:

Content-type: multipart/mixed; boundary="frontier" MIME-version: 1.0 --frontier Content-type: text/plain Este é o corpo da mensagem. --frontier Content-type: application/octet-stream Content-transfer-encoding: base64 gajwO4+n2Fy4FV3V7zD9awd7uG8/TITP/vIocxXnnf/5mjgQjcipBUL1b3uyLwAVtBLOP4nV LdIAhSzlZnyLAF8na0n7g6OSeej7aqIl3NIXCfxDsPsY6NQjSvV77j4hWEjlF/aglS6ghfju FgRr+OX8QZMI1OmR4rUJUS7xgoknalqj3HJvaOpeb3CFlNI9VGZYz6H6zuQBOWZzNB8glwpC --frontier--

Referências[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]