Saltar para o conteúdo principal
Versão: 20 R6

IMAPTransporter

A classe IMAPTransporter permite-lhe recuperar mensagens a partir de um servidor de mensagens IMAP.

Objecto IMAP Transporter

Os objetos do IMAP Transporter são instanciados com o comando IMAP New transporter. Eles oferecem as propriedades abaixo e funções:

.acceptUnsecureConnection : Boolean
True if 4D is allowed to establish an unencrypted connection
.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object

adiciona sinalizadores aos msgIDs para as keywords especificadas
.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object
anexa um mailObj à destinationBox
.authenticationMode : Text
the authentication mode used to open the session on the mail server
.checkConnection() : Object
checks the connection using information stored in the transporter object
.checkConnectionDelay : Integer
o tempo máximo (em segundos) permitido antes de verificar a conexão com o servidor
.connectionTimeOut : Integer
the maximum wait time (in seconds) allowed to establish a connection to the server
.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object

copia as mensagens definidas por msgsIDs ou allMsgs para destinationBox no servidor IMAP
.createBox( name : Text ) : Object
cria uma caixa de correio com o name fornecido
.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object

define o sinalizador "deleted" para as mensagens definidas em msgsIDs ou allMsgs
.deleteBox( name : Text ) : Object
remove permanentemente a caixa de correio com o name fornecido do servidor IMAP
.expunge() : Object
remove todas as mensagens com o sinalizador "deleted" do servidor de e-mail IMAP.
.getBoxInfo( { name : Text }) : Object
retorna um objeto boxInfo correspondente à maibox atual ou à caixa de correio name
.getBoxList( { parameters : Object } ) : Collection
retorna uma coleção de caixas de correio que descreve todas as caixas de correio disponíveis
.getDelimiter() : Text
retorna o caractere usado para delimitar os níveis de hierarquia no nome da caixa de correio
.getMail( msgNumber: Integer { ; options : Object } ) : Object
.getMail( msgID: Text { ; options : Object } ) : Object

retorna o objeto Email correspondente ao msgNumber ou msgID na caixa de correio designada pelo IMAP_transporter
.getMails( ids : Collection { ; options : Object } ) : Object
.getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object

retorna um objeto que contém uma coleção de objetos Email
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
.getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob

retorna um BLOB contendo o conteúdo MIME da mensagem correspondente ao msgNumber ou msgID na caixa de correio designada pelo IMAP_transporter
.host : Text
the name or the IP address of the host server
.logFile : Text
the path of the extended log file defined (if any) for the mail connection
.move( msgsIDs : Collection ; destinationBox : Text ) : Object
.move( allMsgs : Integer ; destinationBox : Text ) : Object

move as mensagens definidas por msgsIDs ou allMsgs para destinationBox no servidor IMAP
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection
converte os números de sequência em IDs exclusivos do IMAP para as mensagens no intervalo sequencial designado por startMsg e endMsg
.removeFlags( msgIDs : Collection ; keywords : Object ) : Object
.removeFlags( msgIDs : Text ; keywords : Object ) : Object
.removeFlags( msgIDs : Longint ; keywords : Object ) : Object

remove os sinalizadores dos msgIDs para as keywords especificadas
.renameBox( currentName : Text ; newName : Text ) : Object
altera o nome de uma caixa de correio no servidor IMAP
.port : Integer
the port number used for mail transactions
.searchMails( searchCriteria : Text ) : Collection
procura por mensagens que correspondam aos searchCriteria fornecidos na caixa de correio atual
.selectBox( name : Text { ; state : Integer } ) : Object
seleciona a caixa de correio name como a caixa de correio atual
.subscribe( name : Text ) : Object
permite adicionar a caixa de correio especificada ao conjunto de caixas de correio "subscritas" do servidor IMAP
.unsubscribe( name : Text ) : Object
remove uma caixa de correio de um conjunto de caixas de correio inscritas
.port : Integer
the port number used for mail transactions

IMAP New transporter

História
ReleaseMudanças
18 R4Adicionado

IMAP New transporter( server : Object ) : 4D.IMAPTransporter

ParâmetroTipoDescrição
serverObject->Informação de servidor de correio
Resultados4D.IMAPTransporter<-Objeto transportador IMAP

Descrição

O comando IMAP New transporter configura uma nova conexão IMAP de acordo com o parâmetro server e retorna um novo objeto transporter. O objeto transporter retornado vai geralmente ser usado para receber emails.

No parâmetro server, passe um objeto contendo as propriedades abaixo:

serverValor padrão (se omitido)
.acceptUnsecureConnection : Boolean
True if 4D is allowed to establish an unencrypted connection
False
.accessTokenOAuth2: Text
.accessTokenOAuth2: Objeto
Cadeia ou objeto token que representa as credenciais de autorização OAuth2. Usado somente com OAUTH2 authenticationMode. Se accessTokenOAuth2 for usado, mas authenticationMode for omitido, o protocolo OAuth 2 será usado (se permitido pelo servidor). Não retornado no objeto IMAP transporter.
nenhum
.authenticationMode : Text
the authentication mode used to open the session on the mail server
o modo de autenticação mais seguro disponível no servidor é usado
.checkConnectionDelay : Integer
o tempo máximo (em segundos) permitido antes de verificar a conexão com o servidor
300
.connectionTimeOut : Integer
the maximum wait time (in seconds) allowed to establish a connection to the server
30
.host : Text
the name or the IP address of the host server
mandatory
.logFile : Text
the path of the extended log file defined (if any) for the mail connection
nenhum
senha : Texto
Senha do usuário para autenticação no servidor. Não retornado no objeto IMAP transporter.
nenhum
.port : Integer
the port number used for mail transactions
993
.port : Integer
the port number used for mail transactions
nenhum

Aviso: certifique-se de que o tempo limite definido seja menor que o tempo limite do servidor, caso contrário, o tempo limite do cliente será inútil.

Resultados

A função retorna um objeto transportador IMAP. Todas as propriedades retornadas são apenas leitura.

A ligação IMAP é automaticamente fechada quando o objecto transportador é destruído.

Exemplo

$server:=New object
$server.host:="imap.gmail.com" //Obrigatório
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"
$server.logFile:="LogTest.txt" //log para salvar na pasta Logs

var $transporter : 4D.IMAPTransporter
$transporter:=IMAP New transporter($server)

$status:=$transporter.checkConnection()
If(Not($status.success))
ALERT("An error occurred: "+$status.statusText)
End if

4D.IMAPTransporter.new()

4D.IMAPTransporter.new( server : Object ) : 4D.IMAPTransporter

ParâmetroTipoDescrição
serverObject->Informação de servidor de correio
Resultados4D.IMAPTransporter<-Objeto transportador IMAP

Descrição

A função 4D.IMAPTransporter.new() cria e retorna um novo objeto do tipo 4D.IMAPTransporter. É idêntico ao comando (atalho) [IMAP New transporter] (#imap-new-transporter).

.acceptUnsecureConnection

História
ReleaseMudanças
17 R4Adicionado

.acceptUnsecureConnection : Boolean

Descrição

The .acceptUnsecureConnection property contains True if 4D is allowed to establish an unencrypted connection when encrypted connection is not possible.

It contains False if unencrypted connections are unallowed, in which case an error in returned when encrypted connection is not possible.

Estão disponíveis portos seguros:

  • SMTP

    • 465: SMTPS
    • 587 ou 25: SMTP com atualização STARTTLS se for compat[ivel com o servidor.
  • IMAP

    • 143: IMAP non-encrypted port
    • 993: IMAP com atualização STARTTLS se for compatível com o servidor
  • POP3

    • 110: Porta não criptografada POP3
    • 995: POP3 com atualização STARTTLS se suportado pelo servidor.

.addFlags()

História
ReleaseMudanças
20Suporta palavras-chave personalizadas
18 R6Adicionado

.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object

ParâmetroTipoDescrição
msgIDsCollection->Coleção de strings: IDs únicos de mensagens (texto)
Texto: ID único de uma mensagem
Longint (todos IMAP): Todas as mensagens na caixa de correio seleccionada
keywordsObject->Flags de palavras chaves a adicionar
ResultadosObject<-Estado da operação addFlags

Descrição

A função .addFlags() adiciona sinalizadores aos msgIDs para as keywords especificadas.

No parâmetro msgIDs, você pode passar qualquer um deles:

  • uma colecção contendo as identificações únicas de mensagens específicas ou
  • o ID único (texto) de uma mensagem ou
  • a seguinte constante (longint) para todas as mensagens na caixa de correio selecionada:
ParâmetrosValorComentário
IMAP all1Seleccione todas as mensagens na caixa de correio seleccionada

O parâmetro keywords permite que você defina os sinalizadores a serem adicionados aos msgIDs. Pode passar qualquer uma das seguintes palavras-chave:

PropriedadeTipoDescrição
$draftParâmetrosTrue para adicionar o marcador "draft" na mensagem
$seenParâmetrosTrue para adicionar o marcador "seen" na mensagem
$flaggedParâmetrosTrue para adicionar o marcador "flagged" na mensagem
$answeredParâmetrosTrue para adicionar o marcador "answered" na mensagem
$deletedParâmetrosTrue para adicionar o marcador "deleted" na mensagem
<custom flag>ParâmetrosTrue para adicionar o marcador personalizado na mensagem

Os nomes das bandeiras personalizadas devem respeitar esta regra: a palavra-chave deve ser um fio não sensível a maiúsculas e minúsculas, excluindo caracteres de controlo e espaço, e não pode incluir nenhum destes caracteres: ( ) { ] % * " \

  • Para que uma palavra-chave seja tida em conta, tem de ser true.
  • A interpretação dos marcadores de palavras-chave pode variar por cliente de correio.

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo

var $options;$transporter;$boxInfo;$status : Object

$options:=New object
$options.host:="imap.gmail.com"
$options.port:=993
$options.user:="4d@gmail.com"
$options.password:="xxxxx"

// Criar transporter
$transporter:=IMAP New transporter($options)

// Selecionar mailbox
$boxInfo:=$transporter.selectBox("INBOX")

// Marcar todas as mensagens de INBOX como lidas
$flags:=New object
$flags["$seen"]:=True
$status:=$transporter.addFlags(IMAP all;$flags)

.append()

História
ReleaseMudanças
18 R6Adicionado

.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object

ParâmetroTipoDescrição
mailObjObject->Objeto Email
destinationBoxText->Caixa de email que vai receber o objeto Email
optionsObject->Objeto que contém informações do charset
ResultadosObject<-Estado da operação anexada

Descrição

A função .append() anexa um mailObj à destinationBox.

No parâmetro mailObj, passe um objeto de e-mail. Para uma descrição abrangente das propriedades de email, consulte Objeto Email. A função .append() suporta tags de palavras-chave no atributo keywords do objeto de e-mail.

O parâmetro opcional destinationBox permite que você passe o nome de uma caixa de correio onde o mailObj será anexado. Se omitido, é utilizada a caixa de correio actual.

No parâmetro opcional options, você pode passar um objeto para definir o conjunto de caracteres e a codificação para partes específicas do e-mail. Propriedades disponiveis:

PropriedadeTipoDescrição
headerCharsetTextCharset e codificação usados para as seguintes partes do e-mail: assunto, nomes de arquivos de anexo e atributos de nome de e-mail. Possíveis valores: Ver tabela de possíveis cartas abaixo
bodyCharsetTextCharset e codificação usados para o conteúdo html e corpo do e-mail. Possíveis valores: Ver tabela de possíveis cartas abaixo

Charsets possíveis:

ParâmetrosValorComentário
mail mode ISO2022JPUS-ASCII_ISO-2022-JP_UTF8_QP
  • headerCharset: US-ASCII se possível, japonês (ISO-2022-JP) e Quoted-printable se possível, caso contrário, UTF-8 e Quoted-printable
  • bodyCharset: US-ASCII, se possível, japonês (ISO-2022-JP) e 7 bits, se possível, caso contrário, UTF-8 e Quoted-printable
mail mode ISO88591ISO-8859-1
  • headerCharset: ISO-8859-1 e Quoted-printable
  • bodyCharset: ISO-8859-1 e 8 bits
mail mode UTF8US-ASCII_UTF8_QPheaderCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & Quoted-printable (valor padrão)
modo de correio UTF8 na base64US-ASCII_UTF8_B64headerCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & base64

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo

Para guardar um e-mail na caixa de correio Drafts:

var $settings; $status; $msg; $imap: Object

$settings:=New object("host"; "domain.com"; "user"; "xxxx"; "password"; "xxxx"; "port"; 993)

$imap:=IMAP New transporter($settings)

$msg:=New object
$msg.from:="xxxx@domain.com"
$msg.subject:="Lorem Ipsum"
$msg.textBody:="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
$msg.keywords:=New object
$msg.keywords["$seen"]:=True//flag the message as read
$msg.keywords["$draft"]:=True//flag the message as a draft

$status:=$imap.append($msg; "Drafts")

.authenticationMode

História
ReleaseMudanças
17 R4Adicionado

.authenticationMode : Text

Descrição

The .authenticationMode property contains the authentication mode used to open the session on the mail server.

Por padrão, o modo mais seguro suportado pelo servidor é usado.

Valores possíveis:

ValorConstantesComentário
CRAM-MD5IMAP authentication CRAM MD5Autenticação usando o protocolo CRAM-MD5
LOGINIMAP authentication loginAutenticação usando o protocolo LOGIN
OAUTH2Autenticação IMAP OAUTH2Autenticação usando o protocolo OAuth2
PLAINIMAP authentication plainAutenticação usando o protocolo PLAIN

.checkConnection()

História
ReleaseMudanças
17 R4Adicionado

.checkConnection() : Object

ParâmetroTipoDescrição
ResultadosObject<-Estado da ligação do objecto transportador

Descrição

The .checkConnection() function checks the connection using information stored in the transporter object, recreates the connection if necessary, and returns the status. Esta função permite verificar se os valores fornecidos pelo utilizador são válidos e consistentes.

Objeto devolvido

A função envia um pedido para o servidor de correio e devolve um objecto descrevendo o estado do correio. Este objeto pode conter as seguintes propriedades:

PropriedadeTipoDescrição
successbooleanVerdadeiro se a verificação for bem sucedida, Falso de outra forma
statusnumber(apenas SMTP) Código de estado devolvido pelo servidor de correio (0 no caso de um problema não relacionado com o processamento de correio)
statusTexttextMensagem de estado devolvida pelo servidor de correio, ou último erro devolvido na pilha de erros 4D
errorscollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor de correio)
[ ].errCodenumberCódigo de erro 4D
[ ].messagetextDescrição do erro 4D
[ ].componentSignaturetextAssinatura da componente interna que devolveu o erro

.checkConnectionDelay

História
ReleaseMudanças
18 R4Adicionado

.checkConnectionDelay : Integer

Descrição

A propriedade .checkConnectionDelay contém o tempo máximo (em segundos) permitido antes de verificar a conexão com o servidor. Se este tempo for excedido entre duas chamadas de método, a ligação ao servidor será verificada. Por padrão, se a propriedade não tiver sido definida no objecto do servidor, o valor é 300.

Aviso: certifique-se de que o tempo limite definido seja menor que o tempo limite do servidor, caso contrário, o tempo limite do cliente será inútil.

.connectionTimeOut

História
ReleaseMudanças
17 R5Adicionado

.connectionTimeOut : Integer

Descrição

The .connectionTimeOut property contains the maximum wait time (in seconds) allowed to establish a connection to the server. By default, if the property has not been set in the server object (used to create the transporter object with SMTP New transporter, POP3 New transporter, or IMAP New transporter), the value is 30.

.copy()

História
ReleaseMudanças
18 R5Adicionado

.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object

ParâmetroTipoDescrição
msgsIDsCollection->Coleção de identificadores únicos de mensagens (strings)
allMsgsInteger->IMAP all: todas as mensagens na caixa de correio selecionada
destinationBoxText->Caixa de correio para receber mensagens copiadas
ResultadosObject<-Estado da operação anexada

Descrição

A função .copy() copia as mensagens definidas por msgsIDs ou allMsgs para destinationBox no servidor IMAP.

Pode passar:

  • no parâmetro msgsIDs, uma colecção contendo as identificações únicas das mensagens específicas a copiar, ou
  • no parâmetro allMsgs, a constante IMAP all (número inteiro) para copiar todas as mensagens na caixa de correio selecionada.

O parâmetro destinationBox permite-lhe passar um valor de texto com o nome da caixa de correio onde as cópias das mensagens serão colocadas.

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo 1

Para copiar uma selecção de mensagens:

 var $server;$boxInfo;$status : Object
var $mailIds : Collection
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obrigatório
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//selecionar mailbox
$boxInfo:=$transporter.selectBox("inbox")

//obtém a coleção de mensagens com IDs únicos
$mailIds:=$transporter.searchMails("subject \"4D new feature:\"")

// copia mensagens encontradas ao mailbox "documents"
$status:=$transporter.copy($mailIds;"documents")

Exemplo 2

Para copiar todas as mensagens na caixa de correio actual:

 var $server;$boxInfo;$status : Object
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obrigatório
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//selecionar mailbox

$boxInfo:=$transporter.selectBox("inbox")

// copiar todas as mensagens ao "documents" mailbox
$status:=$transporter.copy(IMAP all;"documents")

.createBox()

História
ReleaseMudanças
19Adicionado

.createBox( name : Text ) : Object

ParâmetroTipoDescrição
nameText->Nome da nova caixa de correio
ResultadosObject<-Estado da operação de criação da caixa de correio

Descrição

A função .createBox() cria uma caixa de correio com o name fornecido. Se o carácter separador hierárquico do servidor IMAP aparecer noutro lugar no nome da caixa de correio, o servidor IMAP criará os nomes dos pais necessários para criar a caixa de correio em questão.

Por outras palavras, uma tentativa de criar "Projectos/IMAP/Doc" num servidor em que "/" é o carácter separador hierárquico criará:

  • Somente a caixa de correio "Doc" se "Projects" e "IMAP" já existirem.
  • Caixas de correio "IMAP" e "Doc" se apenas "Projetos" já existir.
  • Caixas de correio "Projects", "IMAP" e "Doc", se elas ainda não existirem.

No parâmetro name, passe o nome da nova caixa de correio.

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo

Para criar uma nova caixa de correio "Facturas":

var $pw : text
var $options; $transporter; $status : object

$options:=New object

$pw:=Request("Please enter your password:")
If(OK=1)
$options.host:="imap.gmail.com"
$options.user:="test@gmail.com"
$options.password:=$pw

$transporter:=IMAP New transporter($options)

$status:=$transporter.createBox("Invoices")

If ($status.success)
ALERT("Mailbox creation successful!")
Else
ALERT("Error: "+$status.statusText)
End if
End if

.delete()

História
ReleaseMudanças
18 R5Adicionado

.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object

ParâmetroTipoDescrição
msgsIDsCollection->Coleção de identificadores únicos de mensagens (strings)
allMsgsInteger->IMAP all: todas as mensagens na caixa de correio selecionada
ResultadosObject<-Estado da operação apagada

Descrição

A função .delete() define o sinalizador "deleted" para as mensagens definidas em msgsIDs ou allMsgs.

Pode passar:

  • no parâmetro msgsIDs, uma coleção que contém as IDs exclusivas das mensagens específicas a serem excluídas, ou
  • no parâmetro allMsgs, a constante IMAP all (inteiro) para excluir todas as mensagens da caixa de correio selecionada.

A execução desta função não remove realmente as mensagens. As mensagens com o sinalizador "delete" ainda podem ser encontradas pela função .searchMails(). As mensagens sinalizadas são excluídas do servidor IMAP com a função .expunge() ou selecionando outra caixa de correio ou quando o objeto transportador (criado com IMAP New transporter) é destruído.

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo 1

Para apagar uma selecção de mensagens:

 var $server;$boxInfo;$status : Object
var $mailIds : Collection
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obrigatório
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//selecionar mailbox
$boxInfo:=$transporter.selectBox("Inbox")

//obter coleção das IDs únicas de mensagem
$mailIds:=$transporter.searchMails("subject \"Reports\"")

// Apagar mensagens selecionadas
$status:=$transporter.delete($mailIds)

Exemplo 2

Para apagar todas as mensagens na caixa de correio actual:

 var $server;$boxInfo;$status : Objecto
var $transporter : 4D.IMAPTransporter

$server:=Novo objecto
$server.host:="imap.gmail.com" //Mandatório
$server.port:=993
$server.user:="$transporter"
$server.password:="XXXXXXXX"

$transporter:=IMAP Novo transportador($server)

//seleccionar caixa de correio
$boxInfo:= .selectBox("Junk Email")

// apagar todas as mensagens na caixa de correio actual
$status:=$transporter.delete(IMAP todos)

.deleteBox()

História
ReleaseMudanças
19Adicionado

.deleteBox( name : Text ) : Object

ParâmetroTipoDescrição
nameText->Nome da caixa de correio a apagar
ResultadosObject<-Estado da operação de eliminação da caixa de correio

Descrição

A função .deleteBox() remove permanentemente a caixa de correio com o name fornecido do servidor IMAP. A tentativa de apagar uma INBOX ou uma caixa de correio que não existe, gerará um erro.

No parâmetro name, passe o nome da caixa de correio a ser excluída.

  • A função não pode apagar uma caixa de correio que tenha caixas de correio para crianças se a caixa de correio dos pais tiver o atributo "\Noselect".
  • Todas as mensagens na caixa de correio eliminadas serão também eliminadas.
  • A capacidade de apagar uma caixa de correio depende do servidor de correio.

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo

Para eliminar a caixa de correio filha "Nova Orion Industries" da hierarquia da caixa de correio "Bills":

var $pw; $name : text
var $options; $transporter; $status : object

$options:=New object

$pw:=Request("Please enter your password:")

If(OK=1)$options.host:="imap.gmail.com"
$options.user:="test@gmail.com"
$options.password:=$pw

$transporter:=IMAP New transporter($options)

// excluir caixa de correio
$name:="Bills"+$transporter.getDelimiter()+"Atlas Corp"
$status:=$transporter.subscribe($name)

If ($status.success)
ALERT("Mailbox subscription successful!")
Else
ALERT("Error: "+$status.statusText)
End if
End if

.expunge()

História
ReleaseMudanças
18 R6Adicionado

.expunge() : Object

ParâmetroTipoDescrição
ResultadosObject<-Estado da operação de expurgo

Descrição

A função .expunge() remove todas as mensagens com o sinalizador "deleted" do servidor de e-mail IMAP. O sinalizador "deleted" pode ser definido com os métodos .delete() ou .addFlags().

Objeto devolvido

A função devolve um objecto que descreve o estado IMAP:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
[].errcodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura da componente interna que devolveu o erro

Exemplo

var $options;$transporter;$boxInfo;$status : Object
var $ids : Collection

$options:=New object
$options.host:="imap.gmail.com"
$options.port:=993
$options.user:="4d@gmail.com"
$options.password:="xxxxx"

// Criar transporter
$transporter:=IMAP New transporter($options)

// Selecionar mailbox
$boxInfo:=$transporter.selectBox("INBOX")

// Encontrar e apagar todas as mensagens vistas no INBOX
$ids:=$transporter.searchMails("SEEN")
$status:=$transporter.delete($ids)

// Expurga todas as mensagens marcadas como apagadas
$status:=$transporter.expunge()

.getBoxInfo()

História
ReleaseMudanças
20id é retornado
18 R5name é opcional
18 R4Adicionado

.getBoxInfo( { name : Text }) : Object

ParâmetroTipoDescrição
nameText->Nome da nova caixa de correio
ResultadosObject<-objecto boxInfo

Descrição

A função .getBoxInfo() retorna um objeto boxInfo correspondente à maibox atual ou à caixa de correio name. Essa função retorna as mesmas informações que .selectBox() sem alterar a caixa de correio atual.

No parâmetro opcional name, passe o nome da caixa de correio a ser acessada. O nome representa uma hierarquia inequívoca da esquerda para a direita com níveis separados por um carácter delimitador específico. O delimitador pode ser encontrado com a função .getDelimiter().

Se o nome da caixa de correio não for selecionável ou não existir, a função gera um erro e retorna null.

Objeto devolvido

O objeto boxInfo retornado contém as seguintes propriedades:

PropriedadeTipoDescrição
nametextNome da nova caixa de correio
mailCountnumberNúmero de mensagens na caixa de email
mailRecentnumberNúmero de mensagens com o marcador "recente" (indicando novas mensagens)
idtextParâmetros

Exemplo

 var $transporter : 4D.IMAPTransporter
$transporter:=IMAP New transporter($server)

$info:=$transporter.getBoxInfo("INBOX")
ALERT("INBOX contains "+String($info.mailRecent)+" recent emails.")

.getBoxList()

História
ReleaseMudanças
18 R4Adicionado
19Adicionar parâmetro isSubscribed

.getBoxList( { parameters : Object } ) : Collection

ParâmetroTipoDescrição
parametersObject->Parâmetros
ResultadosCollection<-Coleção de objetos da caixa de correio

Descrição

A função .getBoxList() retorna uma coleção de caixas de correio que descreve todas as caixas de correio disponíveis. Esta função permite gerir localmente a lista de mensagens localizadas no servidor de correio IMAP.

No parâmetro opcional parameters, passe um objeto que contenha valores para filtrar as caixas de correio retornadas. Pode passar:

PropriedadeTipoDescrição
isSubscribedParâmetros
  • True para retornar apenas as caixas de correio subscritas
  • False para retornar todas as caixas de correio disponíveis
  • Resultados

    Cada objecto da coleção devolvida contém as seguintes propriedades:

    PropriedadeTipoDescrição
    [].nametextNome da nova caixa de correio
    [].selectablebooleanIndica se os direitos de acesso permitem ou não que a caixa de correio seja selecionada:
    • true - a caixa de correio pode ser selecionada
    • false - a caixa de correio não pode ser selecionada
    [].inferiorbooleanIndica se os direitos de acesso permitem ou não a criação de uma hierarquia inferior na caixa de correio:
    • true - um nível inferior pode ser criado
    • false - um nível inferior não pode ser criado
    [].interestingbooleanIndica se a caixa de correio foi marcada como "interessante" pelo servidor:
    • true - A caixa de correio foi marcada como "interessante" pelo servidor. For example, it may contain new messages.
    • false - The mailbox has not been marked "interesting" by the server.

    Se a conta não contiver quaisquer caixas de correio, é devolvida uma colecção vazia.

    • Se não houver uma conexão aberta, .getBoxList() abrirá uma conexão.
    • Se a conexão não tiver sido usada desde o atraso de conexão designado (consulte IMAP New transporter), a função .checkConnection( ) será automaticamente chamada.

    Exemplo

     var $transporter : 4D.IMAPTransporter
    $transporter:=IMAP New transporter($server)

    $boxList:=$transporter.getBoxList()

    For each($box;$boxList)
    If($box.interesting)
    $split:=Split string($box.name;$transporter.getDelimiter())
    ALERT("New emails are available in the box: "+$split[$split.length-1])
    End if
    End for each

    .getDelimiter()

    História
    ReleaseMudanças
    18 R4Adicionado

    .getDelimiter() : Text

    ParâmetroTipoDescrição
    ResultadosText<-Caractere delimitador de hierarquia

    Descrição

    A função .getDelimiter() retorna o caractere usado para delimitar os níveis de hierarquia no nome da caixa de correio.

    O delimitador é um caractere a que se pode usar para:

    • criar caixas de correio de nível inferior
    • pesquisar hierarquias de nível mais alto ou mais baixo dentro das caixa de correio

    Resultados

    Carácter delimitador do nome da caixa de correio.

    Exemplo

     var $transporter : 4D.IMAPTransporter
    $transporter:=IMAP New transporter($server)

    $boxList:=$transporter.getBoxList()

    For each($box;$boxList)
    If($box.interesting)
    $split:=Split string($box.name;$transporter.getDelimiter())
    ALERT("New emails are available in the box: "+$split[$split.length-1])
    End if
    End for each

    .getMail()

    História
    ReleaseMudanças
    18 R4Adicionado

    .getMail( msgNumber: Integer { ; options : Object } ) : Object
    .getMail( msgID: Text { ; options : Object } ) : Object

    ParâmetroTipoDescrição
    msgNumberInteger->Número sequencial da mensagem
    msgIDText->ID única da mensagem
    optionsObject->Instruções de tratamento de mensagens
    ResultadosObject<-Objeto email

    Descrição

    A função .getMail() retorna o objeto Email correspondente ao msgNumber ou msgID na caixa de correio designada pelo IMAP_transporter. Essa função permite manejar localmente os conteúdos de email.

    No primeiro parâmetro, pode passar qualquer um dos dois:

    • msgNumber, um valor inteiro que indica o número de sequência da mensagem a ser recuperada ou
    • msgID, um valor de texto que indica a ID exclusiva da mensagem a ser recuperada.

    O parâmetro options opcional permite que você passe um objeto definindo instruções adicionais para manipular a mensagem. As seguintes propriedades estão disponíveis:

    PropriedadeTipoDescrição
    updateSeenbooleanSe Verdadeiro, a mensagem é marcada como "visto" na caixa de correio. Se falso, a mensagem não é marcada como "visto". Valor padrão: True
    withBodybooleanPass True para devolver o corpo da mensagem. Se falso, apenas o cabeçalho da mensagem é devolvido. Valor padrão: True
    • A função gera um erro e retorna Null se msgID designar uma mensagem inexistente,
    • Se nenhuma caixa de correio for selecionada com a função .selectBox(), será gerado um erro,
    • Se não houver uma conexão aberta, .getMail() abrirá uma conexão com a última caixa de correio especificada com .selectBox()`.

    Resultados

    .getMail() retorna um objeto [Email] (EmailObjectClass.md#email-object) com as seguintes propriedades IMAP específicas: id, receivedAt e size.

    Exemplo

    Se quiser receber uma mensagem com ID = 1:

     var $server : Object
    var $info; $mail; $boxInfo : Variant
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Obrigatório
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    //cria transporter
    $transporter:=IMAP New transporter($server)

    //seleciona mailbox
    $boxInfo:=$transporter.selectBox("Inbox")

    //obtém objeto Email com ID 1
    $mail:=$transporter.getMail(1)

    .getMails()

    História
    ReleaseMudanças
    18 R5Adicionado

    .getMails( ids : Collection { ; options : Object } ) : Object
    .getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object

    ParâmetroTipoDescrição
    idsCollection->Colecção de identificação da mensagem
    startMsgInteger->Número sequencial da primeira mensagem
    endMsgInteger->Número sequencial da última mensagem
    optionsObject->Instruções de tratamento de mensagens
    ResultadosObject<-Objeto contendo:
    • uma coleção de [objetos de e-mail] (EmailObjectClass.md#email-object) e
    • uma coleção de IDs ou números para mensagens ausentes, se houver

    Descrição

    A função .getMails() retorna um objeto que contém uma coleção de objetos Email.

    Primeira sintaxe:

    .getMails( ids { ; options } ) -> result

    A primeira sintaxe permite recuperar mensagens com base nas suas identificações.

    No parâmetro ids, passe uma coleção de IDs para as mensagens a serem retornadas. Você pode obter as identificações com .getMail().

    O parâmetro opcional options permite que você defina as partes das mensagens a serem retornadas. Consulte a tabela Opções abaixo para obter uma descrição das propriedades disponíveis.

    Segunda sintaxe:

    .getMails( startMsg ; endMsg { ; options } ) -> result

    A segunda sintaxe permite recuperar mensagens com base num intervalo sequencial. Os valores passados representam a posição das mensagens na caixa de correio.

    No parâmetro startMsg, passe um valor inteiro correspondente ao número da primeira mensagem em um intervalo sequencial. Se você passar um número negativo (startMsg <= 0), a primeira mensagem da caixa de correio será usada como o início da sequência.

    No parâmetro endMsg, passe um valor inteiro correspondente ao número da última mensagem a ser incluída num intervalo sequencial. Se você passar um número negativo (endMsg <= 0), a última mensagem da caixa de correio será usada como o fim da sequência.

    O parâmetro opcional options permite que você defina as partes das mensagens a serem retornadas.

    Options

    PropriedadeTipoDescrição
    updateSeenParâmetrosSe Verdadeiro, as mensagens especificadas são marcadas como "vistas" na caixa de correio. Se falso, as mensagens não são marcadas como "vistas". Valor padrão: True
    withBodyParâmetrosPass True para devolver o corpo das mensagens especificadas. Se falso, apenas os cabeçalhos das mensagens são devolvidos. Valor padrão: True
    • Se nenhuma caixa de correio for selecionada com o comando .selectBox(), será gerado um erro.
    • Se não houver uma conexão aberta, .getMails() abrirá uma conexão com a última caixa de correio especificada com .selectBox().

    Resultados

    .getMails() retorna um objeto que contém as seguintes coleções:

    PropriedadeTipoDescrição
    listaCollectionColeção de objetos [Email] (EmailObjectClass.md#email-object). Se não forem encontrados objetos e-mail, uma coleção vazia é devolvida.
    notFoundCollectionColeção de:
    • primeira sintaxe - IDs de mensagens passadas anteriormente que não existem
    • segunda sintaxe - números de sequência de mensagens entre startMsg e endMsg que não existem
    Uma coleção vazia é retornada se todas as mensagens forem encontradas.

    Exemplo

    Se quiser recuperar os 20 e-mails mais recentes sem alterar o seu estatuto de "visto":

     var $server,$boxInfo,$result : Object
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Mandatório
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    //criar transportador
    $transporter:=IMAP New transporter($server)

    //selecionar caixa de correio
    $boxInfo:=$transporter.selectBox("INBOX")

    If($boxInfo.mailCount>0)
    // recupera os cabeçalhos das últimas 20 mensagens sem marcá-las como lidas
    $result:=$transporter.getMails($boxInfo.mailCount-20;$boxInfo.mailCount;\
    New object("withBody";False;"updateSeen";False))
    For each($mail;$result.list)
    // ...
    End for each
    End if

    .getMIMEAsBlob()

    História
    ReleaseMudanças
    18 R4Adicionado

    .getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
    .getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob

    ParâmetroTipoDescrição
    msgNumberInteger->Número sequencial da mensagem
    msgIDText->ID única da mensagem
    updateSeenParâmetros->Se Verdadeiro, a mensagem é marcada "visto" na caixa de correio. Se Falso, a mensagem é deixada intocada.
    ResultadosBLOB<-Blob da string MIME retornado do servidor mail

    Descrição

    A função .getMIMEAsBlob() retorna um BLOB contendo o conteúdo MIME da mensagem correspondente ao msgNumber ou msgID na caixa de correio designada pelo IMAP_transporter.

    No primeiro parâmetro, pode passar qualquer um dos dois:

    • msgNumber, um valor inteiro que indica o número de sequência da mensagem a ser recuperada ou
    • msgID, um valor de texto que indica a ID exclusiva da mensagem a ser recuperada.

    O parâmetro opcional updateSeen permite que você especifique se a mensagem está marcada como "vista" na caixa de correio. Pode passar:

    • True - para marcar a mensagem como "vista" (indicando que a mensagem foi lida)
    • False - para deixar o status "visto" da mensagem inalterado
    • A função retorna um BLOB vazio se msgNumber ou msgID* designar uma mensagem inexistente,
    • Se nenhuma caixa de correio for selecionada com o comando .selectBox(), será gerado um erro,
    • Se não houver uma conexão aberta, .getMIMEAsBlob() abrirá uma conexão com a última caixa de correio especificada com .selectBox().

    Resultados

    .getMIMEAsBlob() retorna um BLOB que pode ser arquivado em um banco de dados ou convertido a um objeto Email com o comando MAIL Convert from MIME.

    Exemplo

     var $server : Objecto
    var $boxInfo : Variante
    var $blob : Blob
    var $transporter : 4D.IMAPTransporter

    $server:=Novo objecto
    $server.host:="imap.gmail.com"
    $server.port:=993
    $server.user:=" "
    $server.password:="XXXXXXXX"

    //criar transportador
    $transporter:=IMAP Novo transportador($server)

    //seleccionar caixa de correio
    $boxInfo:=$transporter.selectBox("Inbox")

    //get BLOB
    $blob:=$transporter.getMIMEAsBlob(1)

    .host

    História
    ReleaseMudanças
    17 R5Adicionado

    .host : Text

    Descrição

    The .host property contains the name or the IP address of the host server. Utilizado para transacções postais (SMTP, POP3, IMAP).

    .logFile

    História
    ReleaseMudanças
    17 R5Adicionado

    .logFile : Text

    Descrição

    The .logFile property contains the path of the extended log file defined (if any) for the mail connection. Pode ser relativo (à pasta atual de Logs) ou absoluto.

    Unlike regular log files (enabled via the SET DATABASE PARAMETER command), extended log files store MIME contents of all sent mails and do not have any size limit. Para mais informações sobre arquivos de registo estendidos, consultar:

    .move()

    História
    ReleaseMudanças
    18 R5Adicionado

    .move( msgsIDs : Collection ; destinationBox : Text ) : Object
    .move( allMsgs : Integer ; destinationBox : Text ) : Object

    ParâmetroTipoDescrição
    msgsIDsCollection->Coleção de identificadores únicos de mensagens (strings)
    allMsgsInteger->IMAP all: todas as mensagens na caixa de correio selecionada
    destinationBoxText->Caixa de correio para receber mensagens movimentadas
    ResultadosObject<-Estado da operação de mudança

    Descrição

    A função .move() move as mensagens definidas por msgsIDs ou allMsgs para destinationBox no servidor IMAP.

    Pode passar:

    • no parâmetro msgsIDs, uma coleção contendo as IDs únicas das mensagens específicas a mover, ou
    • no parâmetro allMsgs, a constante IMAP all (número inteiro) para mover todas as mensagens na caixa de correio selecionada.

    O parâmetro destinationBox permite-lhe passar um valor de texto com o nome da caixa de correio onde as cópias das mensagens serão colocadas.

    Esta função só é suportada por servidores IMAP em conformidade com o RFC 8474.

    Objeto devolvido

    A função devolve um objecto que descreve o estado IMAP:

    PropriedadeTipoDescrição
    successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
    statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
    errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
    [].errcodeNumberCódigo de erro 4D
    [].messageTextDescrição do erro 4D
    [].componentSignatureTextAssinatura da componente interna que devolveu o erro

    Exemplo 1

    Para mover uma selecção de mensagens:

     var $server;$boxInfo;$status : Object
    var $mailIds : Collection
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Obrigatório
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    $transporter:=IMAP New transporter($server)

    //selecionar mailbox
    $boxInfo:=$transporter.selectBox("Inbox")

    //obter coleção das IDs únicas de mensagem
    $mailIds:=$transporter.searchMails("subject \"4D new feature:\"")

    // mover mensagens encontradas da caixa de correio actual para a caixa de correio "documents"
    $status:=$transporter.move($mailIds; "documentos")

    Exemplo 2

    Para mover todas as mensagens na mailbox atual:

     var $server;$boxInfo;$status : Object
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Mandatório
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    $transporter:=IMAP New transporter($server)

    //seleccionar caixa de correio
    $boxInfo:=$transporter.selectBox("inbox")

    // mover todas as mensagens da caixa de correio actual para a caixa de correio "documents"
    $status:=$transporter.move(IMAP all;"documents")

    .numToID()

    História
    ReleaseMudanças
    18 R5Adicionado

    .numToID( startMsg : Integer ; endMsg : Integer ) : Collection

    ParâmetroTipoDescrição
    startMsgInteger->Número sequencial da primeira mensagem
    endMsgInteger->Número sequencial da última mensagem
    ResultadosCollection<-Colecção de identificações únicas

    Descrição

    A função .numToID() converte os números de sequência em IDs exclusivos do IMAP para as mensagens no intervalo sequencial designado por startMsg e endMsg na caixa de correio selecionada no momento.

    No parâmetro startMsg, passe um valor inteiro correspondente ao número da primeira mensagem em um intervalo sequencial. Se você passar um número negativo (startMsg <= 0), a primeira mensagem da caixa de correio será usada como o início da sequência.

    No parâmetro endMsg, passe um valor inteiro correspondente ao número da última mensagem a ser incluída num intervalo sequencial. Se você passar um número negativo (endMsg <= 0), a última mensagem da caixa de correio será usada como o fim da sequência.

    Resultados

    A função devolve uma colecção de cordas (identificações únicas).

    Exemplo

     var $transporter : 4D.IMAPTransporter
    var $server;$boxInfo;$status : Object
    var $mailIds : Collection

    $server:=New object
    $server.host:="imap.gmail.com" //Mandatório
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    $transporter:=IMAP New transporter($server)

    //select mailbox
    $boxInfo:=$transporter.selectBox("inbox")

    //obter IDs para 5 últimas mensagens recebidas
    $mailIds:=$transporter.numToID(($boxInfo.mailCount-5);$boxInfo.mailCount)

    //excluir as mensagens da caixa de correio actual
    $status:=$transporter.delete($mailIds)

    .removeFlags()

    História
    ReleaseMudanças
    20Suporta palavras-chave personalizadas
    18 R6Adicionado

    .removeFlags( msgIDs : Collection ; keywords : Object ) : Object
    .removeFlags( msgIDs : Text ; keywords : Object ) : Object
    .removeFlags( msgIDs : Longint ; keywords : Object ) : Object

    ParâmetroTipoDescrição
    msgIDsCollection->Coleção de strings: IDs únicos de mensagens (texto)
    Texto: ID único de uma mensagem
    Longint (todos IMAP): Todas as mensagens na caixa de correio seleccionada
    keywordsObject->Flags de palavras-chave a remover
    ResultadosObject<-Estado da operação removeFlags

    Descrição

    A função .removeFlags() remove os sinalizadores dos msgIDs para as keywords especificadas.

    No parâmetro msgIDs, você pode passar qualquer um deles:

    • uma colecção contendo as identificações únicas de mensagens específicas ou
    • o ID único (texto) de uma mensagem ou
    • a seguinte constante (longint) para todas as mensagens na caixa de correio selecionada:
    ParâmetrosValorComentário
    IMAP all1Seleccione todas as mensagens na caixa de correio seleccionada

    O parâmetro keywords permite que você defina os sinalizadores a serem removidos dos msgIDs. Pode passar qualquer uma das seguintes palavras-chave:

    ParâmetroTipoDescrição
    $draftParâmetrosTrue para remover o flag "draft" na mensagem
    $seenParâmetrosTrue para remover a flag "seen" na mensagem
    $flaggedParâmetrosTrue para remover a flag "flagged" na mensagem
    $answeredParâmetrosTrue para remover a flag "answered" na mensagem
    $deletedParâmetrosTrue para remover a flag "deleted" na mensagem
    <custom flag>ParâmetrosTrue para remover a flag personalizada na mensagem

    Consulte .addFlags() para obter mais informações sobre sinalizadores personalizados.

    • Para que uma palavra-chave seja tida em conta, tem de ser true.

    Objeto devolvido

    A função devolve um objecto que descreve o estado IMAP:

    PropriedadeTipoDescrição
    successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
    statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
    errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
    [].errcodeNumberCódigo de erro 4D
    [].messageTextDescrição do erro 4D
    [].componentSignatureTextAssinatura da componente interna que devolveu o erro

    Exemplo

    var $options;$transporter;$boxInfo;$status : Object

    $options:=New object
    $options.host:="imap.gmail.com"
    $options.port:=993
    $options.user:="4d@gmail.com"
    $options.password:="xxxxx"

    // Criar transporter
    $transporter:=IMAP New transporter($options)

    // Selecionar mailbox
    $boxInfo:=$transporter.selectBox("INBOX")

    // Marcar todas as mensagens de INBOX como invisíveis
    $flags:=New object
    $flags["$seen"]:=True
    $status:=$transporter.removeFlags(IMAP all;$flags)

    .renameBox()

    História
    ReleaseMudanças
    19Adicionado

    .renameBox( currentName : Text ; newName : Text ) : Object

    ParâmetroTipoDescrição
    currentNameText->Nome da caixa de correio actual
    newNameText->Nome da nova caixa de correio
    ResultadosObject<-Estado da operação de renomeamento

    Descrição

    A função .renameBox() altera o nome de uma caixa de correio no servidor IMAP. Tentar mudar o nome de uma caixa de correio de um nome de caixa de correio que não existe ou para um nome de caixa de correio que já existe irá gerar um erro.

    No parâmetro currentName, passe o nome da caixa de correio a ser renomeada.

    Passe o novo nome da caixa de correio no parâmetro newName.

    Objeto devolvido

    A função devolve um objecto que descreve o estado IMAP:

    PropriedadeTipoDescrição
    successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
    statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
    errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
    [].errcodeNumberCódigo de erro 4D
    [].messageTextDescrição do erro 4D
    [].componentSignatureTextAssinatura da componente interna que devolveu o erro

    Exemplo

    Para renomear a sua caixa de correio "Invoices" para "Bills":

    var $pw : text
    var $options; $transporter; $status : object

    $options:=New object

    $pw:=Request("Please enter your password:")

    If(OK=1) $options.host:="imap.gmail.com"

    $options.user:="test@gmail.com"
    $options.password:=$pw

    $transporter:=IMAP New transporter($options)

    // rename mailbox
    $status:=$transporter.renameBox("Invoices"; "Bills")

    If ($status.success)
    ALERT("Mailbox renaming successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .port

    História
    ReleaseMudanças
    17 R4Adicionado

    .port : Integer

    Descrição

    The .port property contains the port number used for mail transactions. By default, if the port property has not been set in the server object (used to create the transporter object with SMTP New transporter, POP3 New transporter, IMAP New transporter), the port used is:

    • SMTP - 587
    • POP3 - 995
    • IMAP - 993

    .searchMails()

    História
    ReleaseMudanças
    18 R5Adicionado

    .searchMails( searchCriteria : Text ) : Collection

    ParâmetroTipoDescrição
    searchCriteriaText->Critérios de pesquisa
    ResultadosCollection<-Coleção de números de mensagens

    Descrição

    Essa função é baseada na especificação do [protocolo IMAP] (https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol).

    A função .searchMails() procura por mensagens que correspondam aos searchCriteria fornecidos na caixa de correio atual. O searchCriteria consiste em uma ou mais chaves de pesquisa.

    searchCriteria é um parâmetro de texto que lista uma ou mais chaves de pesquisa (consulte Authorized search-keys abaixo) associadas ou não a valores a serem procurados. Uma chave de pesquisa pode ser um único ou vários itens. Por exemplo:

    SearchKey1 = FLAGGED SearchKey2 = NOT FLAGGED SearchKey3 = FLAGGED DRAFT

    A correspondência não é normalmente sensível a maiúsculas e minúsculas

    • Se o searchCriteria for uma cadeia de caracteres nula, a pesquisa será equivalente a um "seleccionar tudo".
    • Se o searchCriteria incluir várias chaves de pesquisa, o resultado será a interseção (função AND) de todas as mensagens que correspondem a essas chaves.
    searchCriteria = FLAGGED FROM "SMITH"

    ... devolve todas as mensagens com o conjunto de bandeiras sinalizadas E enviadas por Smith.

    • Você pode usar os operadores OR ou NOT da seguinte forma:
    searchCriteria = OR SEEN FLAGGED

    ... devolve todas as mensagens com o conjunto de bandeiras visíveis OU o conjunto de bandeiras sinalizadoras

    searchCriteria = NOT SEEN

    ... devolve todas as mensagens com a bandeira não estabelecida.

    searchCriteria = HEADER CONTENT-TYPE "MIXED" NOT HEADER CONTENT-TYPE "TEXT"...

    ... devolve mensagem cujo cabeçalho de tipo de conteúdo contém "Mixed" e não contém "Text".

    searchCriteria = HEADER CONTENT-TYPE "E" NOT SUBJECT "o" NOT HEADER CONTENT-TYPE "MIXED"

    ... retorna mensagem cujo cabeçalho do tipo de conteúdo contém " e " e cujo cabeçalho do tipo de conteúdo não contém " o " e cujo cabeçalho do tipo de conteúdo não é " Mixed ".

    No que diz respeito aos dois últimos exemplos, note que o resultado da pesquisa é diferente quando se remove os parênteses da primeira lista de chaves de pesquisa.

    • A searchCriteria pode incluir a especificação opcional [CHARSET]. Esta consiste na palavra "CHARSET" seguida de uma palavra registada [CHARSET] (US ASCII, ISO-8859). Indica o conjunto de caracteres da string searchCriteria. Portanto, você deve converter a cadeia de caracteres searchCriteria no conjunto de caracteres especificado se usar a especificação [CHARSET] (consulte os comandos CONVERT FROM TEXT ou Convert to text). Como padrão, os códigos 4D em Quotable Printable the searchCriteria string se conter caracteres estendidos
    searchCriteria = CHARSET "ISO-8859" BODY "Help"

    ... significa que o critério de pesquisa utiliza o iso-8859 charset e o servidor terá de converter o critério de pesquisa antes de efectuar a pesquisa, se necessário.

    Tipos de valores de pesquisa

    As chaves de pesquisa podem solicitar o valor a pesquisar:

    • Chaves de pesquisa com um valor de data: a data é uma cadeia de caracteres que deve ser formatada da seguinte forma: date-day+"-"+date-month+"-"+date-year em que date-day indica o número do dia do mês (máximo de 2 caracteres), date-month indica o nome do mês (jan/fev/mar/abr/mai/jun/jul/ago/set/out/dez) e date-year indica o ano (4 caracteres). Exemplo: searchCriteria = SENTBEFORE 1-Feb-2020 (uma data geralmente não precisa ser colocada entre aspas, pois não contém nenhum caractere especial)

    • Chaves de pesquisa com um valor de cadeia: a cadeia pode conter qualquer carácter e deve ser citada. Se a string não conter quaisquer caracteres especiais, como o carácter espacial, por exemplo, não precisa de ser citada. A citação de tais strings assegurará que o seu valor de strings será interpretado correctamente. Exemplo: searchCriteria = FROM "SMITH" Para todas as chaves de pesquisa que usam cadeias de caracteres, uma mensagem corresponde à chave se a cadeia de caracteres for uma subcadeia do campo. A correspondência não é sensível a maiúsculas e minúsculas.

    • Pesquisa-chaves com um valor de nome de campo: o nome de campo é o nome de um campo de cabeçalho. Exemplo: searchCriteria = HEADER CONTENT-TYPE "MIXED"

    • Search-keys com um valor de sinalizador: o sinalizador pode aceitar uma ou várias palavras-chave (incluindo sinalizadores padrão), separadas por espaços. Exemplo: searchCriteria = KEYWORD \Flagged \Draft

    • Pesquisa-chaves com um valor de conjunto de mensagens: identifica um conjunto de mensagens. Para números de sequência de mensagens, estes são números consecutivos de 1 até ao número total de mensagens na caixa de correio. Uma vírgula delimita números individuais; uma vírgula delimita entre dois números, inclusive. Exemplos: 2,4:7,9,12:* é 2,4,5,6,7,9,12,13,14,15 para uma caixa postal com 15 mensagens. searchCriteria = 1:5 ANSWERED pesquisa na seleção de mensagens do número de sequência de mensagens 1 a 5 para mensagens que têm o sinalizador \Answered definido. searchCriteria= 2,4 ANSWERED pesquisa na seleção de mensagens (números de mensagem 2 e 4) as mensagens que têm o sinalizador \Answered definido.

    Chaves de pesquisa autorizadas

    ALL: Todas as mensagens na caixa de correio.
    ANSWERED: mensagens com o indicador \Answered ativo.
    UNANSWERED: mensagens que não têm o sinalizador indicador \Answered definido.
    DELETED: mensagens com o sinalizador \Deleted ativado.
    UNDELETED: Mensagens que não possuem o indicador \Deleted ativado.
    DRAFT: mensagens com o indicador \Draft ativo.
    UNDRAFT: mensagens que não têm o sinalizador \Draft ativado.
    FLAGGED: mensagens com o indicador \Flagged ativo.
    UNFLAGGED: mensagens que não têm o sinalizador \Flagged ativado.
    RECENT: mensagens que possuem o indicador \Recent ativado.
    OLD: mensagens que não possuem o indicador \Recent definido.
    SEEN: mensagens que têm o sinalizador \Seen ativo.
    UNSEEN: Mensagens que não possuem o indicador \Seen definido.
    NEW: mensagens que tenham o indicador \Recent definido, mas não o indicador\Seen. Isso é funcionalmente equivalente a "(RECENT UNSEEN)".
    KEYWORD flag: mensagens com o conjunto de palavras-chave especificado.
    UNKEYWORD flag: mensagens que não têm a palavra-chave especificada.
    BEFORE date: mensagens cuja data interna é anterior à data especificada.
    ON date: mensagens cuja data interna está dentro da data especificada.
    SINCE date: mensagens cuja data interna está dentro da data especificada ou é posterior a ela.
    SENTBEFORE data: mensagens cujo cabeçalho de data é anterior à data especificada.
    SENTON date: mensagens cujo cabeçalho de Data está dentro da data especificada.
    SENTSINCE data: mensagens cujo cabeçalho de data está dentro ou posterior à data especificada.
    TO string: mensagens que contêm a string especificada no cabeçalho TO.
    FROM string: mensagens que contêm a string especificada no cabeçalho FROM.
    CC string: mensagens que contenham a seqüência de caracteres especificada no cabeçalho CC.
    BCC string: mensagens que contêm a string especificada no cabeçalho BCC.
    SUBJECT string: mensagens que contêm a string especificada no cabeçalho Subject.
    BODY string: mensagens que contêm a string especificada no corpo da mensagem.
    TEXT string: mensagens que contêm a string especificada no cabeçalho ou no corpo da mensagem.
    HEADER nome-do-campo string: mensagens que possuem um cabeçalho com o nome do campo especificado e que contêm a string especificada no corpo-campo.
    UID message-UID: mensagens com identificadores exclusivos correspondentes ao identificador exclusivo especificado.
    LARGER n: mensagens com tamanho maior do que o número de bytes especificado.
    SMALLER n: mensagens com tamanho menor do que o número de bytes especificado.
    NOT chave de pesquisa: mensagens que não correspondem à chave de pesquisa especificada.
    OR search-key1 search-key2: mensagens que correspondem a uma das chaves de pesquisa.

    .selectBox()

    História
    ReleaseMudanças
    20id, flags, permanentFlags são retornados
    18 R4Adicionado

    .selectBox( name : Text { ; state : Integer } ) : Object

    ParâmetroTipoDescrição
    nameText->Nome da nova caixa de correio
    stateInteger->Estado de acesso à caixa de correio
    ResultadosObject<-objecto boxInfo

    Descrição

    A função .selectBox() seleciona a caixa de correio name como a caixa de correio atual. Essa função permite que recupere informação sobre o mailbox.

    Para obter as informações de uma caixa de correio sem alterar a caixa de correio actual, utilize .getBoxInfo().

    No parâmetro name, passar o nome da caixa de correio para aceder. O nome representa uma hierarquia inequívoca da esquerda para a direita com níveis separados por um carácter delimitador específico. O delimitador pode ser encontrado com a função .getDelimiter().

    O parâmetro opcional state define o tipo de acesso à caixa de correio. Os valores possíveis são:

    ParâmetrosValorComentário
    IMAP read only state1A caixa de correio seleccionada é acedida com privilégios apenas de leitura. As mensagens com uma flag "recente" (indicando novas mensagens) permanecem inalteradas.
    IMAP read write state0A caixa de correio seleccionada é acedida com privilégios de leitura e escrita. As mensagens são consideradas "vistas" e perdem o marcador "recente" (indicando novas mensagens). (Valor padrão)
    • A função gera um erro e retorna Null se name designar uma caixa de correio inexistente.
    • Se não houver uma conexão aberta, .selectBox() abrirá uma conexão.
    • Se a conexão não tiver sido usada desde o atraso de conexão designado (veja IMAP New transporter), a função .checkConnection() será automaticamente chamada.

    Objeto devolvido

    O objeto boxInfo retornado contém as seguintes propriedades:

    PropriedadeTipoDescrição
    nameTextNome da nova caixa de correio
    mailCountnumberNúmero de mensagens na caixa de email
    mailRecentnumberNúmero de mensagens com a flag "recent"
    idtextParâmetros
    flagstextLista de flags actualmente utilizadas para a caixa de correio, separadas por espaços
    permanentFlagstextLista de marcadores que o cliente pode mudar permanentemente (excepto a \Recent, que é gerida pelo servidor IMAP), separadas por espaços
    info

    Se a cadeia de caracteres permanentFlags incluir o sinalizador especial *, isso significa que o servidor oferece suporte a sinalizadores personalizados.

    Exemplo

     var $server; $boxinfo : Object
    $server:=New object
    $server.host:="imap.gmail.com" //Obrigatório
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    var $transporter : 4D.IMAPTransporter
    $transporter:=IMAP New transporter($server)
    $boxInfo:=$transporter.selectBox("INBOX")

    .subscribe()

    História
    ReleaseMudanças
    19Adicionado

    .subscribe( name : Text ) : Object

    ParâmetroTipoDescrição
    nameText->Nome da nova caixa de correio
    ResultadosObject<-Estado da operação de subscrição

    Descrição

    A função .subscribe() permite adicionar a caixa de correio especificada ao conjunto de caixas de correio "subscritas" do servidor IMAP. Como tal, pode optar por restringir uma grande lista de caixas de correio disponíveis, subscrevendo as que normalmente deseja ver.

    No parâmetro nome, passe o nome da caixa de correio para adicionar (inscrever) para suas caixas de correio "inscritas".

    Objeto devolvido

    A função devolve um objecto que descreve o estado IMAP:

    PropriedadeTipoDescrição
    successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
    statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
    errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
    [].errcodeNumberCódigo de erro 4D
    [].messageTextDescrição do erro 4D
    [].componentSignatureTextAssinatura da componente interna que devolveu o erro

    Exemplo

    Para subscrever a caixa de correio "Atlas Corp" na hierarquia "Bills":

    var $pw; $name : text
    var $options; $transporter; $status : object

    $options:=New object

    $pw:=Request("Please enter your password:")

    If(OK=1) $options.host:="imap.gmail.com"
    $options.user:="test@gmail.com"
    $options.password:=$pw

    $transporter:=IMAP New transporter($options)

    $name:="Bills"+$transporter.getDelimiter()+"Atlas Corp"
    $status:=$transporter.subscribe($name)

    If ($status.success)
    ALERT("Mailbox subscription successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .unsubscribe()

    História
    ReleaseMudanças
    19Adicionado

    .unsubscribe( name : Text ) : Object

    ParâmetroTipoDescrição
    nameText->Nome da nova caixa de correio
    ResultadosObject<-Estado da operação unsubscribe

    Descrição

    A função .unsubscribe() remove uma caixa de correio de um conjunto de caixas de correio inscritas. Isto permite reduzir o número de caixas de correio que normalmente se vêem.

    No parâmetro name, passe o nome da caixa de correio para remover (cancelar a subscrição) das suas caixas de correio activas.

    Objeto devolvido

    A função devolve um objecto que descreve o estado IMAP:

    PropriedadeTipoDescrição
    successParâmetrosVerdadeiro se a operação for bem sucedida, Falso caso contrário
    statusTextTextMensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D
    errorsCollectionpilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP)
    [].errcodeNumberCódigo de erro 4D
    [].messageTextDescrição do erro 4D
    [].componentSignatureTextAssinatura da componente interna que devolveu o erro

    Exemplo

    Para cancelar a subscrição da caixa de correio "Atlas Corp" na hierarquia "Bills":

    var $pw; $name : text
    var $options; $transporter; $status : object

    $options:=New object

    $pw:=Request("Please enter your password:")

    If(OK=1) $options.host:="imap.gmail.com"
    $options.user:="test@gmail.com"
    $options.password:=$pw

    $transporter:=IMAP New transporter($options)

    $name:="Bills"+$transporter.getDelimiter()+"Atlas Corp"
    $status:=$transporter.unsubscribe($name)

    If ($status.success)
    ALERT("Mailbox unsubscription successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .user

    História
    ReleaseMudanças
    17 R4Adicionado

    .user : Text

    Descrição

    The .user property contains the user name used for authentication on the mail server.