O comando IMAP_MsgFetch permite ao usuário recuperar um ou vários elementos de dados simples de uma mensagem especificada sem necessidade de baixar a mensagem.
imap_ID é uma referencia inteiro longo a uma conexão aberta criada com IMAP_Login.
numMsg é um valor inteiro longo que indica a mensagem a examinar. Este valor representa a posição de uma mensagem dentro da lista atual das mensagens. OnumMsg de uma mensagem não é um valor estável, difere de uma sessão a outra.
dadosMsg é uma variável texto que indica ele ou os elementos a recuperar. No caso de vários elementos de dados, um caracter de espaço deve separar cada um de eles. Há dois tipos de elementos de dados:
Elementos de dados simples, que só recuperam una peça de informação e
Macro elementos de dados, que recuperam várias peças de informação ao mesmo tempo. Três macros definem os conjuntos de informação atuais disponíveis. Uma macro deve ser utilizada sozinha, ou seja sem outra macro nem elemento de dados.
Para obter mais informação sobre os elementos de dados, consulte os parágrafos "Elementos de dados simples" e "Macro elementos de dados"
valoresMsg é uma variável texto que pode devolver um par simples Elemento de dados/Valor de dados, ou uma lista de pares Elemento de dados/Valor de dados.
No primeiro caso, a estrutura do texto devolvido é a seguinte: Elemento de dados + Espaço + Valor de dados
No segundo caso, a estrutura do texto devolvido é a seguinte: Elemento de dados1 + Espaço + Valor de dados1+Elemento de dados2 + Espaço + Valor de dados2.
valoresMsg pode conter uma lista entre parênteses, una cadeia entre aspas ou uma só cadeia em função do parâmetro dadosMsg.
A lista entre parênteses está estruturado da seguinte maneira (ver o exemplo FLAGS): (Valor de dados1 + Espaço +Valor de dados2). Se a lista entre parênteses devolve só o parênteses, isto significa que no há nenhum valor de dados. Esta regra não se aplica a listas de direções entre parênteses (ver o exemplo ENVELOPE).
As cadeias entre aspas se estruturam da seguinte maneira (ver o exemplo INTERNALDATE): Elemento de dados + aspas + valores de dados + Citas. Quando um valor de dados é inexistente, é devolvida uma cadeia vazia "".
As cadeias simples (sem aspas) indicam os valores de tipo inteiro, inteiro longo ou numérico e se estruturam da seguinte maneira: Elemento de dados + espaço + Valor de dados. Neste caso, o mais provável é que tenha que converter ao tipo adequado (ver o exemplo UID).
Nota: As aspas se utilizam geralmente quando as cadeias contém caracteres especiais, como um espaço ou parênteses. Portanto, ao analisar a cadeia de caracteres devolvida pelo comando IMAP_Fetch, os caracteres aspas se levam em consideração ao processar o conteúdo da cadeia.
INTERNALDATE Recupera a data e a hora internas no servidor IMAP. Esta não é a data e hora devolvidas pelo cabeçalho "Date”, e sim a data e hora que indicam o momento no qual a mensagem foi recebido. Para as mensagens enviados via um servidor SMTP, esta informação indica geralmente a data e a hora da entrega final da mensagem. Para as mensagens enviadas depois de um comando IMAP_Copy, esta informação indica geralmente a data e a hora internas da mensagens fonte. O elemento de dados INTERNALDATE devolve uma cadeia entre aspas.
valoresMsg devolve FLAGS () se não há nenhum marcador definido para a mensagem especificada. valoresMsg devolve FLAGS (\Seen \Answered) se os marcadores \Seen e \Answered estão definidos para a mensagem.
RFC822.SIZE Recupera o número de bytes da mensagem, expressado no formato RFC-822. O nome do elemento de dados está separado do valor devolvido por um espaço. Se devolve uma cadeia sem aspas, o que significa que provavelmente necessite converter esta cadeia em inteiro longo (ver o exemplo UID).
ENVELOPE Recupera entre parênteses a lista que descreve a parte do cabeçalho da mensagem. O servidor trata esta parte analisando os campos de cabeçalho e os valores por padrão se é necessário. Os campos de cabeçalho são devolvidos na seguinte ordem: data, assunto, de, responder a, para, cc, bcc, em resposta a e "message-id") Exemplo:
Os cabeçalhos de, para, em resposta a, cc e bcc são listas entre parênteses de estruturas de direções. Uma estrutura de direções é uma lista que descreve uma direção de e-mail. Os campos de uma estrutura de direção se apresentam na seguinte ordem: nome, [SMTP] at-domain-list (source route), nome da caixa de correio e nome do servidor. Por exemplo, (("RSmith" NIL "RSmith" "test")).
BODY Devolve a mesma informação que BODYSTRUCTURE exceto para os dados de extensão (ver BODYSTRUCTURE). Exemplo:
BODYSTRUCTURE Recupera a estrutura MIME da mensagem. O servidor trata esta parte analisando os campos do cabeçalho MIME no cabeçalho e corpo da mensagem. Este elemento de dados é particularmente útil para analisar o conteúdo de uma mensagem sem ter que baixar. Por exemplo, pode provar rapidamente o tamanho de cada parte ou os nomes dos arquivos adjuntos. BODYSTRUCTURE devolveuma lista entre parênteses, cadeias entre aspas e cadeias sem aspas. Em função do conteúdo da mensagem, BODYSTRUCTURE devolverá uma lista “non- multipart” ou uma aninhada (“multipart”):
Lista “non-multipart”: similar, por exemplo, a um e-mail "non-multipart"; a estrutura do corpo de uma mensagem texto simples de 48 linhas e 2279 bytes pode ser a seguinte: ("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "8BIT" 8 1 NIL NIL NIL). Os campos simples de uma lista “non-multipart” entre parênteses aparece na seguinte ordem:
body type
Cadeia que da o tipo do conteúdo de media (Content-type: media type ex. TEXT)
body subtype
Cadeia que da o subtipo do conteúdo de media (Content-type: subtype ex. PLAIN)
body parameter
Lista entre parênteses de pares atributos/valores
parenthesized list
[ex. ("CHARSET" "US-ASCII" "NAME" "cc.diff") onde "US-ASCII" é o valor de "CHARSET" e "cc.diff" é o valor de "NAME".
body id
Cadeia que da o número de ID do conteúdo (permite a um corpo fazer referencia a outro). Portanto, os corpos podem ser etiquetados utilizando o campo de cabeçalho "Content-ID". O valor Content-ID tem uma sintaxes particular no caso de um tipo de media multipart/alternative. Ver a explicação na seção da RFC 2046 relativa aos casos multipart/alternative.
body description
Cadeia que descreve o conteúdo
body encoding
Cadeia que da a codificação de transferência do conteúdo (Content-Transfer-Encoding)
body size
Valor numérico que indica que o tamanho do corpo em bytes. Note que este é o tamanho durante a codificação de transferência e não o tamanho resultante depois da decodificação.
- Um corpo de tipo MESSAGE e subtipo RFC822 contém, justo depois os campos simples, a estrutura de sobre, a estrutura de corpos e o tamanho em linhas de texto da mensagem encapsulada. - Um corpo de tipo TEXT contém, justo depois os campos simples o tamanho em linhas de texto do corpo. Note que este é o tamanho durante a codificação e não o tamanho resultante depois da decodificação. Os dados de extensão seguem os campos simples e os campos de tipo listados acima. Os dados de extensão não se devolvem com o elemento BODY, mas podem ser devolvidos com BODYSTRUCTURE. Se estão presentes, os dados de extensão de uma lista “non multipart” entre parênteses devem aparecer na seguinte ordem:
body MD5
Cadeia que da o valor MD5 do corpo, como se define em [MD5]
body disposition
Lista entre parênteses que consiste de uma cadeia de tipo de disposição seguida por uma lista entre parênteses de pares de atributos/valores como se definiu em [DISPOSITION]
body language
Cadeia ou lista entre parênteses que indica a linguagem do corpo como se definiu em [LANGUAGE-TAGS]
Lista “multipart” entre parênteses: este é o caso do e-mail multipart; inclui uma lista “non-multipart” entre parênteses. Os parênteses aninhados indicam duas partes múltiplas (multiple parts). O primeiro elemento da lista entre parênteses é um corpo aninhado e não um tipo de corpo. O segundo elemento da lista é o subtipo multipart (mixed, digest, parallel, alternative, etc.). O subtipo multipart está seguido pelos dados de extensão. Quando estão presentes, os dados de extensão devem aparecer na seguinte ordem:
body parameter
Lista entre parênteses de pares atributos/valores
body disposition
Lista entre parênteses consiste de uma cadeia de tipo de disposição seguida de uma lista entre parênteses de pares atributos/valores como foi definido em [DISPOSITION]
body language
Cadeia ou lista entre parênteses que indica a linguagem do corpo como se define em [LANGUAGE-TAGS]
Os dados de extensão posteriores ainda não estão definidos nesta versão do protocolo. Estes dados de extensão podem consistir de zero ou mais NILs, cadeias, números ou listas entre parênteses de estes dados. As implementações clientes utilizam o elemento de dados BODYSTRUCTURE DEVEM estar preparadas para aceitar tais dados de extensão. As implementações Server NÃO DEVEM enviar tais dados de extensão até que tenha sido definido em uma revisão do protocolo. Exemplo:BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "7BIT" 22 1 NIL NIL NIL)("APPLICATION" "BYTE-STREAM" ("NAME" "casta37.jpg" "X-MAC-TYPE" "4A504547" "X-MAC-CREATOR" "6F676C65") NIL NIL "BASE64" 98642 NIL ("ATTACHMENT" ("FILENAME" "casta37.jpg")) NIL) "MIXED" ("BOUNDARY" "4D_====================1385356==") NIL NIL) Descrição:(("bodytype" "bodysubtype" (BodyParameterParenthesizedList) bodyId bodyDescription "bodyEncoding" BodySize BodySizeInTextLines ExtensionDataBODYmd5 ExtensionDataBodyDisposition ExtensionDataBodyLanguage) ("bodytype" "bodysubtype" (BodyParameterParenthesizedList) bodyId bodyDescription "bodyEncoding" BodySize BodySizeInTextLines ExtensionDataBODYmd5 ExtensionDataBodyDisposition ExtensionDataBodyLanguage) "multipartSubtype" (ExtensionDataBodyParameterList) ExtensionDataBodyDisposition ExtensionDataBodyLanguage))
UID Recupera o número de identificação único da mensagem, equivalente a executar IMAP_UIDToMsgNum. Como este número se devolve em uma área de texto, deve o converter em Inteiro longo. Exemplo: