Un mensaje MIME se representa en el intermediario como un árbol lógico. Cuando graba un mensaje, el analizador MIME crea una corriente de bits de mensaje mediante el árbol de mensajes lógico.
Elementos de árbol lógico
Un mensaje MIME se representa en el intermediario como un árbol lógico con los elementos siguientes.
- La raíz del árbol es un nodo denominado MIME.
- Todas las cabeceras formateadas correctamente se almacenan en el árbol lógico, independientemente
de que se ajusten al estándar MIME. Las cabeceras aparecen en el árbol lógico como
nombre=valor, como se muestra aquí:
Content-Type=text/xml
- Un mensaje MIME de varias partes se representa mediante un subárbol con un nodo raíz
denominado Parts.
- Los datos de preámbulo o epílogo asociados con un mensaje MIME de varias partes
se representan mediante elementos de sólo valor que aparecen como el primer y el último hijo
de Parts.
- En el caso especial de un MIME de una sola parte, el contenido se
representa mediante un subárbol con la raíz denominada Data.
- Cada parte de un mensaje MIME de varias partes se representa mediante un elemento denominado
Part con un elemento hijo para cada cabecera MIME y un último hijo denominado Data.
- El elemento Data representa el contenido de una parte MIME. Esto hace que sea más
fácil probar la presencia del contenido de cuerpo utilizando ESQL porque el elemento Data
es siempre el último hijo de su padre.
Escribir mensajes MIME
Cuando graba un mensaje, el analizador MIME crea una corriente de bits de mensaje mediante el árbol de mensajes lógico. Dado que
el dominio MIME no impone todas las restricciones que requiere la especificación MIME,
es posible que genere mensajes MIME que no cumplan con la especificación
MIME. Las restricciones que el analizador MIME impone son:
- El árbol debe tener una raíz denominada MIME y los elementos constituyentes Parts, Part
y Data, como se describe en Elementos de árbol lógico.
- Exactamente una cabecera Content-Type debe estar presente en el nivel superior del árbol o estar disponible utilizando la propiedad ContentType. Los subtipos de contenido no se validan.
- Si el tipo de soporte es multipart, también debe existir un parámetro de límite válido.
- Las partes MIME constituyentes pueden tener exactamente una cabecera
Content-Type.
Si el valor de esta cabecera empieza con multipart, también debe incluir
un parámetro de límite válido. El valor de este parámetro de límite no debe ser igual que otros
valores de parámetro de límite de la definición.
- El valor Content-Type de MIME "message" no se soporta y produce un error
en la ejecución.
- Todos los elementos nombre-valor del árbol se escriben como
nombre: valor seguidos de la secuencia ASCII <CR><LF>.
Si tiene otros elementos en el árbol, el analizador se comporta del mismo modo
que el analizador de cabecera HTTP:
- Un elemento de sólo nombre o un elemento NombreValor con un valor NULL produce
Nombre: NULL.
- Todos los hijos de un elemento nombre-valor se ignoran.
El flujo de mensajes debe serializar subárboles si existe; puede utilizar el mandato de ESQL
ASBITSTREAM.