Mensajes MIME

Cabeceras MIME

Un mensaje MIME consta de datos y metadatos. Los metadatos MIME constan de cabeceras de estilo HTTP y de delimitadores de límites MIME. Cada cabecera es una pareja de nombre-valor separada por dos puntos en una línea. La secuencia ASCII <CR><LF> termina la línea. Una secuencia de estas cabeceras, denominada bloque de cabecera, se termina con una línea en blanco: <CR><LF><CR><LF>. Las cabeceras que siguen a este estilo HTTP pueden aparecer en un documento MIME. En Campos de cabeceras MIME estándar, se describen diversas cabeceras MIME estándares.

Content-Type

La única cabecera que el analizador MIME insiste en que esté presente es la cabecera Content-Type. Esta cabecera especifica el tipo de los datos del mensaje. Si el valor de Content-Type empieza por "multipart", el mensaje es un mensaje MIME de varias partes. Para mensajes de varias partes, Content-Type también debe incluir un atributo de límite proporcionando el texto utilizado para delimitar las partes del mensaje. Cada parte MIME independiente tiene su propio Content-Type que especifica el tipo de los datos de la parte. Ésta también puede constar de varias partes, permitiendo que se aniden mensajes de varias partes. Las partes MIME con cualquier otro valor de Content-Type se manejan como datos BLOB.

Si se envía un documento MIME a través de HTTP, la cabecera Content-Type aparece en el bloque de cabecera HTTP en lugar de aparecer en el cuerpo de mensaje MIME. Por esta razón, el intermediario maneja el valor de la cabecera Content-Type como la propiedad de tipo de contenido de la carpeta Propiedades del árbol lógico. Esto permite al analizador MIME obtener el valor de Content-Type para un documento MIME recibido a través de HTTP. Si necesita crear un nuevo árbol MIME o modificar el valor de Content-Type, establezca el valor de Content-Type utilizando la propiedad ContentType en el dominio MIME. Si establece el valor de Content-Type directamente en el árbol MIME o los árboles HTTP, puede que el valor se ignore o se utilice de forma incoherente. El ESQL siguiente es un ejemplo de cómo establecer la propiedad ContentType de intermediario:
SET OutputRoot.Properties.ContentType = 'text/plain';

Análisis

El dominio MIME no impone la especificación MIME completa. Esto le permite trabajar con mensajes que pueden no ser válidos en otras aplicaciones. Por ejemplo, el analizador MIME no insiste en una cabecera MIME-Version. El analizador MIME impone estas restricciones:
  • Las cabeceras MIME deben estar formateadas correctamente. Esto significa que:
    • Cada cabecera es una pareja de nombre-valor separada por dos puntos, en una línea propia, terminada por la secuencia ASCII <CR><LF>.
    • La línea de cabecera debe utilizar ASCII de 7 bits.
    • Utilice punto y coma para separar parámetros:
      Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml
    • Una cabecera puede tener un comentario entre paréntesis, por ejemplo:
      MIME-Version: 1.0 (Generado por XYZ)
  • Una línea que empieza con espacio en blanco se trata como una continuación de la línea anterior. Esto permite dividir una cabecera larga entre varias líneas.
  • Si dos o más cabeceras de un bloque de cabecera tienen el mismo nombre, los valores se concatenan en una lista separada por coma.
  • Tiene que haber disponible una cabecera MIME Content-Type de nivel superior. La cabecera no es sensible a las mayúsculas y minúsculas. Si el transporte es HTTP, se utiliza cualquier valor Content-Type de la cabecera HTTP como Content-Type de nivel superior. Si el transporte no es HTTP, Content-Type debe aparecer en el bloque de cabecera inicial del mensaje MIME.
  • El valor Content-Type es un tipo de medio seguido del carácter / y de un subtipo. text/xml y multipart/related son ejemplos de ello. El analizador no valida los subtipos. Este valor puede ir seguido de uno o varios parámetros separados por punto y coma.
  • Si el tipo de medio de un mensaje es de varias partes, un atributo de límite debe proporcionar el texto utilizado para delimitar las partes MIME independientes.
  • Cada parte MIME individual puede tener su propia cabecera Content-Type. La cabecera de parte (Part) puede tener un tipo de medio de varias partes, permitiendo anidar mensajes de varias partes. En este caso, se debe proporcionar un atributo de límite válido y el valor debe ser diferente de cualquier valor definido anteriormente en el mensaje. Las partes MIME con cualquier otro valor de Content-Type se manejan como datos BLOB.
  • Los delimitadores de límite de varias partes MIME se representan en ASCII de 7 bits. El delimitador de límite consta de una línea que empieza con un par de guiones, seguidos de una serie de caracteres de límite. Esta secuencia no se debe producir dentro del mensaje MIME en ningún otro punto que no sea un límite. Un delimitador final MIME es un par de guiones, seguidos de la serie de caracteres de límite MIME, seguida de un par de guiones adicional. Todas las líneas delimitadoras deben finalizar en la secuencia ASCII <CR><LF>. Un ejemplo de un mensaje delimitado es:
    --límite_MIME
    datos de mensaje
    --límite_MIME
    datos de mensaje
    --límite_MIME--
    donde límite_MIME es la serie de caracteres delimitadora de límite y datos de mensaje representa los datos del mensaje.
  • El tipo de medio MIME "mensaje" no se soporta y produce un error en la ejecución.
  • Los datos de preámbulo (el texto entre el bloque de cabecera MIME inicial y el primer delimitador de límite) o los datos de epílogo (el texto después del delimitador de límite final) se almacenan en el árbol lógico como un elemento de sólo valor. Los datos de preámbulo y los datos de epílogo sólo pueden aparecer como el primero y el último hijo respectivamente de un nodo Parts.
  • El analizador MIME no soporta el análisis a petición e ignora la propiedad Temporización del análisis. El analizador no valida los mensajes MIME con un modelo de mensaje e ignora la propiedad de validación del Kit de herramientas de Message Brokers.

Casos especiales de MIME de varias partes

El analizador MIME está principalmente destinado a utilizarse con mensajes MIME de varias partes. Sin embargo, el analizador también maneja algunos casos especiales:
  • MIME de varias partes con sólo una parte. El árbol lógico para la parte MIME guarda el tipo de contenido (Content-Type) y otra información como es habitual, pero el elemento de datos (Data) para el adjunto está vacío.
  • MIME de una sola parte. Para MIME de una sola parte, el árbol lógico no tiene ningún hijo Parts. El último hijo del árbol MIME es el elemento Data. El elemento Data es el padre del BLOB que contiene los datos de mensaje.
  • Partes MIME sin contenido.

MIME seguro (S/MIME)

S/MIME es un estándar para enviar correo seguro. S/MIME tiene un tipo de contenido de nivel externo de varias partes/firmado con los parámetros protocol y micalg que definen los algoritmos utilizados para cifrar el mensaje. Una o más partes MIME pueden tener contenido cifrado. Estas partes tienen valores de tipo de contenido (Content-Type) tales como application/pkcs7-signature y una codificación de transferencia de contenido (Content-Transfer-Encoding) de base64. El dominio MIME no intenta interpretar o verificar si el mensaje está realmente firmado.

Conceptos relacionados
Detalles del árbol MIME
Estructura del árbol lógico
Conceptos de modelado de mensajes
Tareas relacionadas
Manipular el contenido del cuerpo del mensaje
Referencia relacionada
Campos de cabeceras MIME estándar
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac30080_