Protocolo de Extensiones de Correo de Internet Multipropósito
Multipurpose Internet Mail Extensions (MIME) es un estándar de Internet que amplía el formato de correo electrónico para soportar:
- texto en conjuntos de caracteres diferentes a US-ASCII;
- adjuntos no textuales;
- cuerpos de mensaje multiparte; y
- información de cabecera en conjuntos de caracteres no ASCII.
SMTP solo admite caracteres ASCII de 7 bits, lo que efectivamente significa que solo soporta un pequeño número de idiomas. Los idiomas basados en el alfabeto latino están bien en SMTP; otros idiomas no se muestran correctamente cuando se entrega el correo electrónico. Sin embargo, MIME extiende el soporte de caracteres ASCII de SMTP para que los correos que usan otros juegos de caracteres, imágenes y sonidos puedan enviarse y mostrarse. En general, todos los clientes de correo y servidores SMTP manejan correctamente los mensajes en formato MIME.
Entendiendo las cabeceras MIME
Las cabeceras MIME contienen información sobre el protocolo.
MIME-Version
Esto indica que el mensaje está formateado como MIME. Aparece como:
MIME-Version: 1.0
Tipo de contenido
Esto indica el tipo de contenido del mensaje, dado como un par tipo/subtipo: text/plain, text/html, por ejemplo. El tipo de contenido multipart puede contener texto, HTML, adjuntos, imágenes, audio, video, etc.
Content-Type: multipart
Codificación de transferencia de contenido
Indica si se utiliza un esquema de codificación binario-a-texto encima de la codificación especificada por content-type. Si lo tiene, indica cuál. Podemos especificar aquí tipos de codificación 7-bit, 8-bit y binary.
Palabra codificada
Las cabeceras de los mensajes SMTP normalmente usan caracteres ASCII. Los caracteres no ASCII deben usar la sintaxis de palabra codificada MIME en lugar de una cadena literal. El formato es:
"=? charset ? encoding ? texto codificado ?=".
Mensajes multipart
Un mensaje MIME multipart contiene un delimitador en la cabecera content-type. Este delimitador, que no debe aparecer en ninguna de las partes, se coloca entre las partes, y al inicio y al final del cuerpo del mensaje, como sigue:
MIME-versión: 1.0
Content-type: multipart/mixed; boundary="frontier"
This is a multi-part message in MIME format.
--frontier
Content-type: text/plain
This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
Cada parte consta de su propia cabecera de contenido y un cuerpo.
Subtipos multipart
El estándar MIME define varios subtipos de mensajes multipartes. El subtipo se especifica en la cabecera "Content-Type" del mensaje global.
A continuación se muestra una lista de los subtipos más usados.
- Mixed: Multipart/mixed se usa para enviar archivos con diferentes cabeceras "Content-Type" en línea. Al enviar imágenes u otros archivos fácilmente legibles, la mayoría de los clientes de correo los mostrará en línea.
- Message: Una parte de mensaje contiene un correo electrónico.
- Digest: digest es una forma sencilla de enviar múltiples mensajes de texto. El tipo de contenido predeterminado para cada parte es "message/rfc822".
- Alternative: El subtipo alternative indica que cada parte es una versión "alternativa" del mismo (o similar) contenido, cada una en un formato diferente señalado por su cabecera "Content-Type".
Comúnmente, multipart/alternative se usa para correos con dos partes, una de texto plano (text/plain) y una HTML (text/html). La parte de texto plano brinda compatibilidad hacia atrás mientras que la parte HTML permite el uso de formato e hipervínculos. La mayoría de los clientes de correo ofrecen una opción al usuario para preferir texto plano sobre HTML; este es un ejemplo de cómo factores locales pueden influir en cómo una aplicación elige cuál es la parte "mejor" del mensaje para mostrar.