Uma mensagem MIME é representada
no broker como uma árvore lógica. Ao gravar uma mensagem, o analisador MIME
cria um fluxo de bits de mensagem usando a árvore de mensagens lógicas.
Elementos da Árvore Lógica
Uma mensagem MIME
é representada no broker como uma árvore lógica nos seguintes elementos:
- A raiz da árvore é um nó chamado MIME.
- Todos os cabeçalhos formatados corretamente são armazenados na árvore lógica, independentemente
de estarem de acordo com o padrão MIME. Os cabeçalhos aparecem na árvore lógica
como name=value, conforme mostrado aqui:
Content-Type=text/xml
- Uma mensagem MIME multipartes é representada por uma subárvore com um nó raiz
chamado Parts.
- Os dados iniciais ou finais associados a uma mensagem MIME multipartes
são representados por elementos apenas de valor que aparecem como o primeiro e o último filhos
de Parts.
- No caso especial de MIME de parte única, o conteúdo é representado
por uma subárvore com a raiz chamada Data.
- Cada parte de uma mensagem MIME multipartes é representada por um elemento chamado
Part com um elemento-filho para cada cabeçalho MIME e por um último filho chamado Data.
- O elemento Data representa o conteúdo de uma parte MIME. Isto facilita o teste para a presença do
conteúdo do corpo usando ESQL, porque o elemento Data é sempre o último filho de seu pai.
Gravando Mensagens MIME
Ao gravar uma mensagem,
o analisador MIME cria um fluxo de bits de mensagem usando a árvore de mensagens
lógicas. O domínio
MIME não reforça todas as restrições requeridas pela especificação MIME, portanto,
ele pode gerar mensagens MIME que não estão de acordo com a especificação MIME. As restrições MIME impostas pelo analisador MIME são:
- A árvore deve ter uma raiz chamada MIME e os elementos constituintes Parts, Part e
Data, conforme descrito em Elementos da Árvore Lógica.
- Exatamente um cabeçalho Content-Type deve estar presente no nível superior
da árvore ou estar disponível usando a propriedade ContentType. Os subtipos de mídia
não são validados.
- Se o tipo de mídia for multipart, um parâmetro de limite
válido também deverá existir.
- Quaisquer partes MIME constituintes podem ter exatamente um cabeçalho Content-Type.
Se o valor deste cabeçalho iniciar com multipart,
ele também deverá incluir um parâmetro de limite válido. O valor deste parâmetro de limite não deve ser
igual aos outros valores de parâmetros de limite na definição.
- O valor de Tipo de Conteúdo MIME "message" não é suportado e resulta
em um erro no tempo de execução.
- Todos os elementos nome-valor na árvore são gravados como
name: value seguidos pela seqüência
ASCII <CR><LF>.
Se você tiver outros elementos na árvore, o analisador irá comportar-se
da mesma forma que o analisador do cabeçalho HTTP:
- Um elemento apenas de nome ou um elemento NameValue com um valor NULL resulta em Name:
NULL.
- Os filhos de um elemento nome-valor são ignorados.
O fluxo de mensagens deve serializar
subárvores se elas existirem; você pode usar o comando de ESQL
ASBITSTREAM.