4D Internet Commands v16

Comandos IMAP4, Introdução

Página Inicial

 
4D Internet Commands v16
Comandos IMAP4, Introdução

Comandos IMAP4, Introdução  


 

 

O conjunto de comandos IMAP4 lhe permite a sua base de dados acessar e manipular mensagens de email em um servidor de correio IMAP e recuperar mensagens eletrônicos de seu servidor IMAP. Os comandos IMAP são compatíveis com o protocolo Internet Message Access, versão 4 revisão 1 (IMAP4 rev1), definido por RFC 2060. IMAP4 rev1 permite a gestão de pastas de mensagens a distancia, chamados "caixas de correio", da mesma maneira que as caixas de correio locais.

Os comandos IMAP incluem operações para criar, apagar e renomear caixas de correio, verificar a presença de novas mensagens, eliminar permanentemente mensagens, asinalar e apagar marcadores (flags) mensagens de pesquisa; e recuperar partes de mensagens.

Conexão: se refere à sequência completa de interações cliente/servidor IMAP, desde a conexão de rede inicial (IMAP_Login) até o final da conexão (IMAP_Logout).

Sessão: se refere à sequência de interações cliente/servidor IMAP desde o momento em que se seleciona uma caixa de correio (IMAP_SetCurrentMB) até o final da conexão (IMAP_SetCurrentMB, IMAP_CloseCurrentMB) ou até que seja fechada a conexão (IMAP_Logout).

  • Inicialização da comunicação TCP: IT_MacTCPInit (o comando IT_PPPConnect deve ser chamado antes de IT_MacTCPInit no caso de uma conexão PPP).
  • Abertura de uma conexão: IMAP_Login
  • Gestão de caixas de correio: listar, criar, eliminar, renomear, Inscrever-se ou cancelar a inscrição, obter o estado dos parâmetros.
  • Abertura de uma sessão ao definir a caixa de trabalho atual: IMAP_SetCurrentMB.
    Uma vez seja estabelecida a caixa de correio atual, pode administrar as mensagens que contém.
  • Gestão de mensagens: listar, baixar ou eliminar mensagens; listar os marcadores das mensagens, modificar os marcadores das mensagens, copiar a outra caixa de correio, buscar e recuperar partes de mensagens sem download, etc.
  • Uma vez que tenha terminado de trabalhar com as mensagens da caixa de correio atual, pode fechar a sessão ou abrir uma nova definindo outra caixa de correio atual. Em todos los casos, o servidor IMAP atualiza de forma permanente suas mensagens. Por exemplo, serão eliminadas todas as mensagens com o marcador \Deleted.
  • Uma vez terminada, deve fechar a sessão. Fechamento de uma conexão: IMAP_Logout.
  • Outras operações: definição das preferências, capacidade, verificação da conexão e reinicialização do temporizador de inatividade antes de fechar a sessão automaticamente no servidor IMAP.

Os comandos IMAP se dividem em duas seções: IC IMAP Review Mail (trocadas com o servidor IMAP) e IC Downloaded Mail (tratamento local). Esses comandos foram separados para mostrar os diferentes métodos de leitura de e-mail. Ao ler o email de um servidor IMAP, as mensagens (ou informação das mensagens) podem importar nas estruturas 4D (variáveis, campos, arrays) ou baixar no disco. Esta seção descreve as possibilidades oferecidas por 4D Internet Commands para ler as mensagens de um servidor IMAP.

O tamanho dos arquivos a baixar determinam o uso de uma forma ou outra. Por exemplo, um único e-mail contendo um anexo de 5 MB pode facilmente exceder a capacidade de armazenamento do banco de dados. Apenas uma imagem 4D ou um campo BLOB é capaz de armazenar algo deste tamanho, no entanto, a conversão de uma mensagem ou anexo a este formato não é muito eficiente desde o acesso à imagem ou BLOB envolve a mobilização de recursos de memória para o acesso à imagem ou para o BLOB. Para resolver este problema, o comando IMAP_Download transfere as mensagens do servidor IMAP para o disco rígido do usuário.

Uma vez importado ao disco, a seção "IC Downloaded Mail" detalha os comandos que se utilizam para manipular arquivos locais.

Uma caixa de correio IMAP pode ser lidada como uma pasta e pode conter arquivos e/ou subpastas. Do mesma forma, uma caixa de correio pode conter mensagens e/ou sub caixas de correio.

Uma caixa de correio é acessada utilizando seu nome hierárquico completo. Segundo o servidor IMAP, cada nível hierárquico está separado por um separador de hierarquia (um separador devolve utilizando o comando IMAP_ListMBs).

Pode utilizar o separador para criar caixas de correios e para buscar os níveis mais altos ou mais baixos da hierarquia de nomes. Todos os filhos de um nível hierárquico principal utilizam o mesmo caráter separador

Nota: As mensagens só podem ser administradas uma vez selecionado a caixa de correio de trabalho atual (IMAP_SetCurrentMB).

Cada conta pode ter um ou várias caixas de correio.

Os nomes de caixas de correio levam em conta as maiúsculas e minúsculas, portanto, não podem ser criados duas caixas de correio com nomes que diferenciam só por ter maiúsculas ou minúsculas.

A caixa de correio INBOX é um caso particular: existe em todas as contas e se utiliza para armazenar as mensagens recebidas. O INBOX é criado automaticamente cada vez que uma conta se configura.

Um usuário não pode eliminar o INBOX mas pode mudar seu nome. Se decide mudar o nome, é criado imediatamente um novo INBOX vazio. O nome INBOX não leva em conta as maiúsculas e minúsculas.

Alguns atributos da caixa de correio, como o número total de mensagens ou de mensagens novos, podem ser tidas, inclusive se a caixa de correio não é o atual.

Para o uso dos comandos IMAP, é importante entender completamente os parâmetros numMsg e IDunico.

numMsg é o número de uma mensagem na caixa de correio no momento que se executa o comando IMAP_SetCurrentMB.

Uma vez selecionado uma caixa de correio atual, as mensagens são numeradas do 1 até o número total de elementos na caixa de correio. Os números assinalados em função da ordem em que as mensagens foram recebidas na caixa de correio, sendo 1 o mais antigo. Os números assinalados às mensagens somente são válidos desde o momento de selecionar a caixa de correio de trabalho atual (IMAP_SetCurrentMB) até que seja fechado (IMAP_CloseCurrentMB, IMAP_SetCurrentMB ou IMAP_Logout).

Quando A caixa de correio é fechada, todos as mensagens marcadas para eliminação são apagadas

Quando o usuário inicia a sessão de novo no servidor IMAP, as mensagens presentes na caixa de correio são numeradas de novo do 1 ao X. Por exemplo, se tem 10 mensagens na caixa de correio e se as mensagens do 1 ao 5 são eliminadas quando o usuário volta a abrir a caixa, as antigas mensagens 6-10 se tornam as mensagens do 1 ao 5.

Por exemplo, vamos ver o seguinte exemplo: conectar-se a um servidor IMAP e obter a seguinte lista de mensagens:

numMsgIDunicoDataDeAssunto
1100051 Julh 2001 ...danw@acme.comClientes potenciais...
2100081 Julh 2001 ...frank@acme.comOrdem de licença no site
3100123 Julh 2001 ...joe@acme.com¿Alguem quer ir almoçar?
4200004 Julh 2002 ...kelly@acme.comSua esposa chamou...
5200014 Julh 2002 ...track@fedex.comSeguimento FedEx

Durante esta sessão, você apaga as mensagens 3 e 4. Ao fechar a caixa de correio de trabalho atual, as eliminações se realizam. Quando volte ao servidor, a lista de mensagens será renumerada desta maneira:

numMsgIDunicoFechaDeAssunto
1100051 Julh 2001 ...danw@acme.comClientes potenciais...
2100081 Julh 2001 ...frank@acme.comOrdem de licença no site
3200014 Julh 2002 ...track@fedex.comSeguimento FedEx

numMsg não é um valor estático e podem variar de uma sessão a outra. Mudará em relação com outras mensagens no momento em que se seleciona na caixa de correio de trabalho atual.

Pelo contrário, IDunico é um número único assinalado à mensagem pelo servidor IMAP em uma ordem estritamente ascendente. A medida que cada mensagem é agregada a caixa de correio, lhe é atribuído um identificador mais alto que o da mensagem previamente adicionado.

Infelizmente, os servidores IMAP não utilizam o IDunico como referencia principal para suas mensagens. Ao utilizar os comandos IMAP terá que especificar o numMsg como referencia para as mensagens no servidor. Os desenvolvedores devem ter cuidado ao desenvolver soluções que referenciam as mensagens na base de dados, deixando o corpo da mensagem no servidor.

Como a característica principal de IMAP é a interoperabilidade, a recomendação final é “Provar TUDO.” É recomendável, provar o cliente com todos os servidores nos que tem conta.

Para maior informação, consulte as seguintes páginas web:

  • IMAP Products and Services: http://www.imap.org/products.html
  • MailConnect: http://www.imc.org/imc-mailconnect.

Login EquivalenteNo parâmetro POP para IMAP
VerifyIDEquivalente
DeleteEquivalenteOs comandos IMAP apagam em tempo real. Os comandos POP3 requerem POP3_Logout para eliminar as mensagens de forma permanente. IMAP_SetFlags com o marcador \Deleted permite obter o mesmo resultado que POP3_Delete
LogoutEquivalente
SetPrefsEquivalenteSem pastaDocAdj para IMAP, o parâmetro POP3 pastaDocAdj se torna opcional
GetPrefsEquivalenteVer nota pastaDocAdj em SetPrefs
MsgLstInfo Equivalente
MsgInfoEquivalente
MsgLstEquivalente
UIDToMsgNumEquivalenteIDunico é um Inteiro longo para IMAP e uma cadeia para POP3
DownloadEquivalente
POP3_ResetNo direct equivNecessita a combinação de IMAP_Search nos marcadores \Deleted e IMAP_SetFlags para apagar os marcadores \Deleted
POP3_BoxInfoNão equivalência diretaNecessita a combinação dos comandos IMAP_SetCurrentMB e IMAP_MsgLstInfo
IMAP_ MsgNumToUID Não equivalência direta
GetMessageQuase equivalenteIMAP é mais poderoso como permite selecionar unicamente o corpo da mensagem
POP3_CharsetNão equivalenteIMAP trata automaticamente os conjuntos de caracteres
IMAP_CapabilityNão equivalenteEspecífico ao protocolo IMAP
IMAP_ListMBsNão equivalenteEspecífico ao protocolo IMAP
IMAP_GetMBStatusNão equivalenteEspecífico ao protocolo IMAP
IMAP_SetCurrentMBNão equivalenteEspecífico ao protocolo IMAPl
IMAP_GetCurrentMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_CloseCurrentMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_CopyToMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_SubscribeMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_CreateMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_DeleteMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_RenameMBNão equivalenteEspecífico ao protocolo IMAP
IMAP_SetFlagsNão equivalenteEspecífico ao protocolo IMAP
IMAP_GetFlagsNão equivalenteEspecífico ao protocolo IMAP
IMAP_SearchNão equivalenteEspecífico ao protocolo IMAP
IMAP_MsgFetchNão equivalenteEspecífico ao protocolo IMAP

Notas:

  • Servidores IMAP e POP3: no caso dos servidores IMAP, não declare msgID da mesma forma, dado que msgID é um inteiro longo.
  • A eliminação não funciona exatamente da mesma maneira entre os protocolos POP3 e IMAP. IMAP_Delete elimina as mensagens em tempo real. Para obter o mesmo resultado que POP3_Delete, use IMAP_SetFlags para estabelecer o marcador \Deleted; para obter o mesmo resultado que POP3_Reset, use IMAP_SetFlags para recuperar os marcadores \Deleted.
  • Para uma maior flexibilidade, os comandos de Internet de 4D podem omitir uma referência à conexão IMAP controles de baixo nível TCP e vice versa. Para obter mais informação, consulte a seção Low Level Routines, Overview.

 
PROPRIEDADES 

Produto: 4D Internet Commands
Tema: IC IMAP Review Mail

 
HISTÓRIA 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)