4D Internet Commands v16

IMAP_MsgFetch

Página Inicial

 
4D Internet Commands v16
IMAP_MsgFetch

IMAP_MsgFetch 


 

IMAP_MsgFetch ( imap_ID ; numMsg ; dadosMsg ; valoresMsg ) -> Resultado 
Parâmetro Tipo   Descrição
imap_ID   Inteiro longo in Referencia de conexão IMAP
numMsg  Inteiro longo in Número da mensagem
dadosMsg  Texto in Elementos de dados a recuperar
valoresMsg  Texto in Valores dos dados recuperados
Resultado  Inteiro in Código de erro

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. O numMsg 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.

Exemplo:

 dadosMsg:="INTERNALDATE"
 $Err:=IMAP_MsgFetch(imap_ID;1;dadosMsg;valoresMsg)

valoresMsg devolve INTERNALDATE "17-Jul-2001 15:45:37 +0200"

  • FLAGS
    Recupera entre parênteses a lista dos marcadores definidos para a mensagem. Os marcadores estão separados por espaços.

Exemplo:

 dadosMsg:="FLAGS"
 $Err:=IMAP_MsgFetch(imap_ID;1;dadosMsg;valoresMsg)

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).

Exemplo:

 dadosMsg:="RFC822.SIZE"
 $Err:=IMAP_MsgFetch(imap_ID;1;dadosMsg;valoresMsg)

valoresMsg devolve RFC822.SIZE 99599

  • 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:
 dadosMsg:="ENVELOPE"
 $Err:=IMAP_MsgFetch(imap_ID;1;dadosMsg;valoresMsg)

valoresMsg devolve ENVELOPE ("Tue, 17 Jul 2001 17:26:34 +0200" "Test" (("RSmith" NIL "RSmith" "test")) (("RSmith" NIL "RSmith" "test")) (("RSmith" NIL "RSmith" "test")) (("RSmith" NIL "RSmith" "test")) () () "" "<ee6b33a.-1@Mail.x6foadRIbnm>")

Date:"Tue, 17 Jul 2001 17:26:34 +0200"Cabeçalho date
Subject:"Test"subject header
From:(("RSmith" NIL "RSmith" "test"))Estrutura de direção
Sender:(("RSmith" NIL "RSmith" "test"))Estrutura de direção
reply-to:(("RSmith" NIL "RSmith" "test"))Estrutura de direção
to:(("RSmith" NIL "RSmith" "test"))Estrutura de direção
cc:() Cabeçalho Cc
bcc:() Cabeçalho Bcc
in-reply-to:""In-reply-to header
message-id:"<ee6b33a.-1@Mail.x6foadRIbnm>"message-id header

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:
 dadosMsg:="BODY"
 $Err:=IMAP_MsgFetch(imap_ID;1;dadosMsg;valoresMsg)

valoresMsg devolve BODY ("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "8BIT" 8 1)

  • 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 devolve uma 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 typeCadeia que da o tipo do conteúdo de media (Content-type: media type ex. TEXT)
      body subtypeCadeia que da o subtipo do conteúdo de media (Content-type: subtype ex. PLAIN)
      body parameterLista 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 idCadeia 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 descriptionCadeia que descreve o conteúdo
      body encodingCadeia que da a codificação de transferência do conteúdo (Content-Transfer-Encoding)
      body sizeValor 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 MD5Cadeia que da o valor MD5 do corpo, como se define em [MD5]
      body dispositionLista 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 languageCadeia ou lista entre parênteses que indica a linguagem do corpo como se definiu em [LANGUAGE-TAGS]


      Exemplo: ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 2279 48 NIL NIL NIL)
      Descrição:("bodytype" "bodysubtype" (BodyParameterParenthesizedList) bodyId bodyDescription "bodyEncoding" BodySize BodySizeInTextLines ExtensionDataBODYmd5 ExtensionDataBodyDisposition ExtensionDataBodyLanguage)
    • 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 parameterLista entre parênteses de pares atributos/valores
      body dispositionLista 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 languageCadeia 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:
 dadosMsg:="UID"
 $Err:=IMAP_MsgFetch(imap_ID;1;dadosMsg;valoresMsg)

valoresMsg devolve UID 250000186

Para obter um inteiro longo:

 C_LONGINT(vLongint)
 VLongint:=Num("250000186")

  • FAST
    Macro equivalente a: (FLAGS INTERNALDATE RFC822.SIZE)
    Exemplo:
 $Err:=IMAP_MsgFetch(imap_ID;msgNum;"FAST";msgDataItemValue)

valoresMsg devolve "FLAGS (\Seen \Answered) INTERNALDATE "17-Jul-2001 15:45:37 +0200" RFC822.SIZE 99599"

  • ALL
    Macro equivalente a: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE)
  • FULL
    Macro equivalente a: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY)



Ver também 

IMAP_SetFlags
IMAP_UIDToMsgNum

 
PROPRIEDADES 

Produto: 4D Internet Commands
Tema: IC IMAP Review Mail
Número 88868

 
HISTÓRIA 

Criado por: 4D Internet Commands 6.8.1

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)