Multipurpose Internet Mail Extensions o MIME (n'asturianu "estensiones multipropósito de corréu d'internet") son una serie de convenciones o especificaciones empobinaes al intercambiu al traviés d'Internet de too tipu d'archivos (testu, audiu, videu, etc.) de forma tresparente pal usuariu. Una parte importante del MIME ta dedicada a ameyorar les posibilidaes de tresferencia de testu en distintos idiomes y alfabetos. En sentíu xeneral les estensiones de MIME van empuestes a soportar:
Testu en conxuntos de calteres distintos d'US-ASCII; adxuntos que nun son de tipu testu; cuerpos de mensaxes con múltiples partes (multi-part); información d'encabezadures con conxuntos de calteres distintos de ASCII.
Práuticamente tolos mensaxes de corréu electrónicu escritos por persones n'Internet y una proporción considerable d'estos mensaxes xeneraos automáticamente son tresmitíos en formatu MIME al traviés de SMTP. Los mensaxes de corréu electrónicu n'Internet tán tan cercanamente acomuñaos col SMTP y MIME que usualmente llámase-yos mensaxe SMTP/MIME.
En 1991 la IETF (Grupu de Trabayu n'Inxeniería d'Internet, Internet Engineering Task Force n'inglés) empezó a desenvolver esta norma y dende 1994 toles estensiones MIME tán especificaes de forma detallada en diversos documentos oficiales disponibles n'Internet.
MIME ta especificáu en seis Request for Comments o RFC (n'español "solicitú de comentarios): RFC 2045, RFC 2046, RFC 2047, RFC 4288, RFC 4289 y RFC 2077.
Los tipos de conteníu definíos pol estándar MIME tienen gran importancia tamién fuera del contestu de los mensaxes electrónicos. Exemplu d'esto son dalgunos protocolo de rede tales como HTTP de la Web. HTTP requier que los datos sían tresmitíos nun contestu de mensaje tipo e-mail anque los datos pueden nun ser un e-mail puramente dichu.
Na actualidá nengún programa de corréu electrónicu o navegador d'Internet puede considerase completu si nun acepta MIME nes sos distintes facetes (testu y formatos d'archivu).
Introducción El protocolu básicu de tresmisión de mensaxes electrónicos d'Internet soporta namái calteres ASCII de 7 bit (vease tamién 8BITMIME). Esto llinda los mensaxes de corréu electrónicu, yá que inclúin namái calteres abondos pa escribir nun númberu amenorgáu de llinguaxes, principalmente Inglés. Otros llinguaxes basaos nel Alfabetu llatín ye adicionalmente un componente fundamental en protocolos de comunicación como HTTP, el que requier que los datos sían tresmitíos como un e-mail anque los datos pueden nun ser un e-mail puramente dichu. Los veceros de corréu y los Servidor de corréu servidores de corréu converten automáticamente dende y a formatu MIME cuando unvien o reciben (SMTP/MIME) e-mails.
Nomenclatura de tipos MIME asigna un nome a cada tipu de datos. Los nomes siguen el siguiente formatu:
tipu/subtipo (tipu como subtipo son cadenes de calteres)
El tipu define la categoría xeneral de los datos y el subtipo define un tipu más específicu d'esos datos. El tipu puede contener los siguientes valores: text: Indica que'l conteníu ye testu planu. Exemplos de subtipos: html, xml multipart: Indica que tien múltiples partes de datos independientes. Exemplos de subtipos: form-data, digest message: Pa encapsular un mensaxe esistente. Por casu cuando queremos responder a un mensaxe de corréu incorporando'l mensaxe orixe. Exemplos de subtipos: partial, rfc822 image: Indica que ye una imaxe. Ej de subtipos: png, gif audiu: Indica que ye un audiu. Exemplos de subtipos: mp3, 32kadpcm video: Indica que ye un video. Exemplos de subtipos: mpeg, avi application: Indica que se trata de datos d'aplicación los cualos pueden ser binarios. Exemplos de subtipos: json, pdf
MIME headers
MIME-Version La presencia d'esta encabezadura indica que'l mensaxe utiliza'l formatu MIME. El so valor ye típicamente igual a "1.0" polo qu'esta encabezadura apaez como: MIME-Version: 1.0
Tien De señalase que los implementadores intentaron camudar el númberu de versión nel pasáu y el cambéu tuvo resultancies imprevistes. Nuna xunta d'IETF realizada en xunetu 2007 decidió caltenese el númberu de versión en "1.0" anque se realizaron munches actualizaciones a la versión de MIME.
Content-Type Esta encabezadura indica'l tipu de mediu que representa'l conteníu del mensaxe, consiste nun tipu: type y un subtipo: subtype, por casu: Content-Type: text/plain
Al traviés del usu del tipu multiparte (multipart), MIME da la posibilidá de crear mensaxes que tengan partes y subpartes entamaes nuna estructura arbórea na que los nodos fueya pueden ser cualquier tipu de conteníu non multiparte y los nodos que nun son fueyes pueden ser de cualesquier de les variedaes de tipos multiparte. Esti mecanismu soporta: mensaxes de testu planu usando text/plain (este ye'l valor implícitu pa la encabezadura "Content-type:") testu más archivos axuntos (multipart/mixed con una parte text/plain y otres partes que nun son de testu, por casu: application/pdf pa documentos PDF, application/vnd.oasis.opendocument.text para OpenDocument text). Un mensaxe MIME qu'inclúi un archivu axuntu xeneralmente indica'l nome orixinal del archivu con una encabezadura "Content-disposition:" o por un atributu name de Content-Type, polo que'l tipu o formatu del archivu indícase usando tantu la encabezadura MIME content-type y la extensión del archivu (usualmente dependiente del SO). Content-Type: application/vnd.oasis.opendocument.text; name="Carta.odt" Content-Disposition: inline; filename="Carta.odt" reenviar col mensaxe orixinal axuntu (multipart/mixed con una parte text/plain y el mensaxe orixinal como una parte message/rfc822) conteníu alternativo, un mensaxe que contién el testu tantu en testu planu como n'otru formatu, usualmente HTML (multipart/alternative col mesmu conteníu en forma de text/plain y text/html) munches otres construcciones de mensaxe
Content-Transfer-Encoding En Xunu de 1992, MIME (RFC 1341 queda obsoleta pola nueva RFC 2045) define un conxuntu de métodos pa representar datos binarios usando testu ASCII. La encabezadura MIME content-transfer-encoding: indica'l métodu que foi usáu. La RFC y la llista de IANA definen los siguientes valores, que nun son sensibles a mayúscules nin minúscules: Fayadizos pa usar con SMTP: 7bit — soporta hasta 998 octetos per llinia de códigu; los calteres tán nel rangu ente 1..127 con CR y LF (códigos 13 y 10 respeutivamente) que namái pueden apaecer como parte d'un fin de llinia CRLF. Este ye'l valor implícitu pa esta encabezadura. Quoted printable — usáu pa codificar secuencies arbitraries de octetos de forma que satisfaiga les regles de 7bit. Foi diseñáu pa ser eficiente y na mayoría de los casos legible pa un humanu cuando ye usáu con datos de testu que consisten primariamente en calteres del conxuntu US-ASCII y que tamién contengan porciones de bytes con valores que tán fora d'esi rangu. base64 — usáu pa codificar secuencies arbitraries de octetos de forma que satisfaiga les regles de 7bit. Tien una sobrecarga fixa al executar l'algoritmu y tien el propósitu de ser usáu con datos que nun sían de testu o testos que contengan pocos valores dientro del rangu de ASCII. Fayadizu pa usar con servidores SMTP que soporten 8BITMIME estensiones SMTP: 8bit — soporta hasta 998 octetos per llinia de códigu, los calteres tán nel rangu ente 1..256 con CR y LF (códigos 13 y 10 respeutivamente) que namái pueden apaecer como parte d'un fin de llinia CRLF. Afechos namái pa usar con servidores SMTP que soporten la estensión SMTP BINARYMIME (RFC 3030): binary — cualquier secuencia de octetos.
Nun esiste una codificación definida explícitamente pa unviar datos binarios arbitrarios al traviés d'un tresporte SMTP coles estensiones 8BITMIME. Por tanto base64 o quoted-printable (coles sos ineficiencias acomuñaes) tienen que ser usaes entá. Estes restricciones nun s'apliquen a otros usos d'MIME como son Servicio Web con adxuntos MIME o MTOM
Encoded-Word Dende la RFC 2822, los nomes y valores de les encabezadures MIME de mensaxes son siempres calteres ASCII; los valores que contengan otru tipu de calteres tienen qu'usar la sintaxis de pallabra codificada o encoded-word (RFC 2047) en llugar del testu lliteral. Esta sintaxis utiliza una cadena de calteres ASCII qu'indica'l conxuntu de calteres orixinal (el "charset") y el content-transfer-encoding usáu pa mapear los bytes del conxuntu orixinal a calteres ASCII.
La so forma xeneral ye: =?charset?codificación?testu codificado?= charset puede ser cualquier conxuntu de calteres rexistráu con IANA. Típicamente va coincidir col charset del cuerpu del mensaxe. codificación puede ser: "Q" que denota Q-encoding que ye similar a la codificación quoted-printable, o "B" que denota la codificación base64. testu codificado ye'l testu codificado con Q-encoding o base64.
Diferencies ente Q-encoding y quoted-printable Los códigos ASCII del signu d'entruga (?) y el signu d'igualdá (=) nun pueden ser representaos direutamente yá qu'ellos son usaos como allindiadores del encoded-word. El códigu ASCII reserváu pal espaciu nun puede ser representáu direutamente porque puede causar qu'intérpretes antiguos estremen, de forma ensin deseyar, el encoded-word. Pa faer la codificación más pequeña y bono de lleer, el símbolu sorrayáu (_) utilizar en llugar del espaciu, creando l'efectu collateral qu'esti símbolu non pueda representase direutamente. L'usu de encoded-word en ciertes partes de les encabezadures impon otres restricciones sobre cuálos calteres pueden o nun ser representaos direutamente.
Por casu: Subject: =?utf-8?Q?=C2=A1Hola,_se=C3=B1or!?=
ye interpretáu como: Subject: ¡Hola, señor!
El formatu encoded-word nun s'utiliza pa los nomes de les encabezadures (por casu Subject). Estos nomes d'encabezadures son siempres n'Inglés. Cuando se llee'l mensaxe con un veceru de corréu n'otru idioma que nun sía Inglés, los nomes de les encabezadures son traducíos pol veceru.
Mensaxes multiparte Un mensaxe MIME multiparte contién una frontera na encabezadura "Content-type:"; esta frontera, que nun puede apaecer en nenguna de les partes, ye allugada ente caúna d'elles, y al entamu y a la fin del cuerpu del mensaxe, como s'amuesa de siguío:
MIME-version: 1.0 Content-type: multipart/mixed; boundary="frontera"
This is a multi-part message in MIME format. --frontera Content-type: text/plain
Esti ye'l cuerpu del mensaxe --frontera Content-type:
application/octet-stream Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+RXN0ZSBlcyBlbCBjdWVy cG8gZGVsIG1lbnNhamU8L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cic=\ --frontera--
Cada parte consiste de la so propia encabezadura de conteníu (cero o más campos d'encabezadures Content-) y un cuerpu. El conteníu multiparte pue tar añeráu. L'encabezáu content-transfer-encoding d'un tipu multiparte tien siempres que ser "7bit", "8bit" o "binary" pa evitar los entueyos impuestos cola presencia de múltiples niveles de decodificación. El bloque multiparte, como un tou, nun tien especificación avera del conxuntu de calteres (charset); los calteres non ASCII nes encabezadures de la parte son remanaos al traviés d'Encoded-Word, y los cuerpos de les partes pueden tener conxuntos de calteres especificaos si aplicara pal so tipu de conteníu.
Notes: Antes de la primer frontera hai un área que ye inorada por veceros de corréu electrónicu que soporten MIME. Esta área ye xeneralmente usada pa poner un mensaxe pa usuarios de veceros vieyos que nun soporten MIME. Nun ye hasta'l momentu d'unviar el mensaxe que'l veceru de corréu escueye una cadena de calteres pa usar na frontera ente les partes, esto dexa buscar una cadena de testu que nun coincida con nenguna porción del cuerpu de nenguna de les partes. Esto típicamente ye implementáu usando una cadena llarga xenerada aleatoriamente.
Subtipos de Multiparte