Saltar para o conteúdo principal
Versão: v20 R4 BETA

IMAPTransporter

A classe IMAPTransporter permite-lhe recuperar mensagens a partir de um servidor de correio electrónico IMAP.

Objecto do IMAP Transporter

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

.acceptUnsecureConnection : Boolean    Verdadeiro se 4D for permitido estabelecer uma ligação não encriptada
.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object
    adiciona flags ao msgIDs para as palavras-chave especificadas ``
.append( mailObj : Objecto ; destinationBox : Texto ; opções : Objecto ) : Object    anexa um mailObj ao destinationBox
.authenticationMode : Text    o modo de autenticação utilizado para abrir a sessão no servidor de correio
.checkConnection() : Object     verifica a ligação utilizando a informação armazenada no objeto de transporte
.checkConnectionDelay : Integer    o tempo máximo (em segundos) permitido antes de verificar a ligação ao servidor
.connectionTimeOut : Integer    o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout
.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object
    A função .getMails()
.createBox( name : Text ) : Object    cria uma caixa de correio com o nomedado
.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object
    define o marcador "apagado" para as mensagens definidas em msgsIDs ou allMsgs
.deleteBox( name : Text ) : Object    remove permanentemente a caixa de correio com o nome dado do servidor IMAP
.expunge() : Object    remove todas as mensagens com o marcador "apagada" do servidor de correio IMAP.
.getBoxInfo( { name : Text }) : Object    devolve um objeto boxInfo correspondente à maibox actual, ou a caixa de correio nome
.getBoxList( { parameters : Object } ) : Collection    devolve uma colecção de caixas de correio descrevendo todas as caixas de correio disponíveis
.getDelimiter() : Text    devolve o carácter utilizado 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
    A função .getMail()
.getMails( ids : Collection { ; options : Object } ) : Object
.getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object
    devolve o BLOB contendo o conteúdo MIME para a mensagem correspondente a msgNumber ou msgID na caixa de correio designada pelo IMAP_transporter
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
.getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob
    copia as mensagens definidas por msgsIDs ou allMsgs para a Caixa de destino ** no servidor IMAP
.host : Text    o nome ou o endereço IP do servidor anfitrião
.logFile : Text    o caminho do arquivo de registo alargado definido (se existir) para a ligação de correio
.move( msgsIDs : Collection ; destinationBox : Text ) : Object
.move( allMsgs : Integer ; destinationBox : Text ) : Object
    move as mensagens definidas por msgsIDs ou allMsgs para a destinationBox no servidor IMAP
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection    converte os números sequenciais para IDs únicos 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 flags do msgIDs para as palavras-chave especificadas
.renameBox( currentName : Text ; newName : Text ) : Object    muda o nome de uma caixa de correio no servidor IMAP
.port : Integer     o número do porto utilizado para as transações postais
.searchMails( searchCriteria : Text ) : Collection    procura por mensagens que correspondam ao dado searchCriteria na caixa de correio actual
.selectBox( name : Text { ; state : Integer } ) : Object    A função .selectBox()
.subscribe( name : Text ) : Object    permite adicionar ou remover a caixa de correio especificada de/para o 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 subscritas
.user : Text     o nome de usuário utilizado para autenticação no servidor de correio

IMAP New transporter

Histórico
VersãoMudanças
v18 R4Adicionado

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

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

|

Descrição

O comando IMAP Novo transportador configura uma nova ligação IMAP de acordo com o parâmetro server e devolve um novo objecto 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    Verdadeiro se 4D for permitido estabelecer uma ligação não encriptadaFalse
.accessTokenOAuth2: Texto
.accessTokenOAuth2: Objecto
Cadeia de texto ou objecto simbólico representando as credenciais de autorização do OAuth2. Usado apenas com OAUTH2 authenticationMode. Se accessTokenOAuth2 for utilizado mas authenticationMode for omitido, é utilizado o protocolo OAuth 2 (se permitido pelo servidor). Não devolvido em IMAP transporter objecto.
nenhum
.authenticationMode : Text    o modo de autenticação utilizado para abrir a sessão no servidor de correioo modo de autenticação mais seguro disponível no servidor é usado
.checkConnectionDelay : Integer    o tempo máximo (em segundos) permitido antes de verificar a ligação ao servidor300
.connectionTimeOut : Integer    o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout30
.host : Text    o nome ou o endereço IP do servidor anfitriãoobrigatório
.logFile : Text    o caminho do arquivo de registo alargado definido (se existir) para a ligação de correionenhum
.password : Texto
senha de usuário para autenticação no servidor. Não devolvido em IMAP transporter objecto.
nenhum
.port : Integer     o número do porto utilizado para as transações postais993
.user : Text     o nome de usuário utilizado para autenticação no servidor de correionenhum

Aviso: Certifique-se de que o tempo limite definido é inferior ao tempo limite do servidor, caso contrário, o tempo limite do cliente será inútil.

Resultados

A função devolve um objecto de transporte do 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<-Objecto de transporte IMAP

|

Descrição

A função 4D.IMAPTransporter.new() cria e devolve um novo objecto do tipo 4D.IMAPTransporter. É idêntico ao comando IMAP Novo Transportador (atalho).

.acceptUnsecureConnection

Histórico
VersãoMudanças
v17 R4Adicionado

.acceptUnsecureConnection : Boolean

Descrição

A propriedade .acceptUnsecureConnection contém Verdadeiro se 4D for permitido estabelecer uma ligação não encriptada quando a ligação encriptada não é possível.

Contém False se conexões cifradas não forem permitidas, neste caso um erro é retornado quando a conexão criptografada não for possível.

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órico
VersãoMudanças
v20Suporta palavras-chave personalizadas
v18 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 flags ao msgIDs para as palavras-chave especificadas ``.

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

  • 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 seleccionada:

    ParâmetrosValorComentário
    IMAP all1Seleccione todas as mensagens na caixa de correio seleccionada

O parâmetro palavras-chave permite-lhe passar um objecto com valores de palavras-chave para bandeiras específicas a acrescentar a 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órico
VersãoMudanças
v18 R6Adicionado

.append( mailObj : Objecto ; destinationBox : Texto ; opções : Objecto ) : 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 ao destinationBox.

No parâmetro mailObj , passe um objecto Email. In the mailObj parameter, pass an Email object. A função .append() é compatível com tags de palavras-chave no atributo , palavra-chave do objeto Email.

O parâmetro opcional destinationBox permite-lhe passar o nome de uma caixa de correio onde o mailObj será anexado. Se omitido, é utilizada a caixa de correio actual.

No parâmetro opcional opções , pode passar um objecto para definir o charset e a codificação para partes específicas do correio electrónico. 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) & impressora, se possível, caso contrário, UTF-8 & Quoted-printable
  • bodyCharset: US-ASCII se possível, japonês (ISO-2022-JP) & 7-bit se possível, caso contrário, UTF-8 & Quoted-printable
mail mode ISO88591ISO-8859-1
  • headerCharset: ISO-8859-1 & Quoted-printable
  • bodyCharset: ISO-8859-1 & 8-bit
mail mode UTF8US-ASCII_UTF8_QPheaderCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & Citação-printável (valor por padrão)
modo de correio UTF8 na base64US-ASCII_UTF8_B64headerCharset & bodyCharset: US-ASCII se possível, senão 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:=Novo objecto
$msg.keywords["$seen"]:= Verdadeiro/// assinalar a mensagem como lido
$msg.keywords["$draft"]:= Verdadeiro/// assinalar a mensagem como um rascunho

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

.authenticationMode

Histórico
VersãoMudanças
v17 R4Adicionado

.authenticationMode : Text

Descrição

A propriedade .authenticationMode< contém o modo de autenticação utilizado para abrir a sessão no servidor de correio.

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órico
VersãoMudanças
v17 R4Adicionado

.checkConnection() : Object

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

|

Descrição

A função .checkConnection() verifica a ligação utilizando a informação armazenada no objeto de transporte, recria a ligação, se necessário, e devolve o estado. 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órico
VersãoMudanças
v18 R4Adicionado

.checkConnectionDelay : Integer

Descrição

A propriedade .checkConnectionDelay contém o tempo máximo (em segundos) permitido antes de verificar a ligação ao 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 é inferior ao tempo limite do servidor, caso contrário, o tempo limite do cliente será inútil.

.connectionTimeOut

Histórico
VersãoMudanças
v17 R5Adicionado

.connectionTimeOut : Integer

Descrição

A propriedade .sendTimeOut contém o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout. .

.copy()

Histórico
VersãoMudanças
v18 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 seleccionada
destinationBoxText->Caixa de correio para receber mensagens copiadas
ResultadosObject<-Estado da operação anexada

|

Descrição

A função .copy() A função .getMails().

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 , o IMAP all constante (inteiro) para copiar todas as mensagens na caixa de correio seleccionada.

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órico
VersãoMudanças
v19Adicionado

.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 nomedado. 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á:

  • Apenas a caixa de correio "Doc" se "Projectos" & "IMAP" já existir.
  • "IMAP" & "Doc" caixas de correio se apenas "Projectos" já existirem.
  • "Projectos" & "IMAP" & "Doc" caixas de correio, se ainda não existirem.

No parâmetro nome , 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; $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
Else
ALERT("Error: "+$status.statusText)
End if
End if

.delete()

Histórico
VersãoMudanças
v18 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 seleccionada
ResultadosObject<-Estado da operação apagada

|

Descrição

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

Pode passar:

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

A execução desta função não remove realmente as mensagens. As mensagens com a bandeira "apagar" ainda podem ser encontradas pela função .searchMails() . As mensagens assinaladas são eliminadas do servidor IMAP com a função .expunge() ou seleccionando outra caixa de correio ou quando o objecto de transporte (criado com IMAP Novo transportador) é 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órico
VersãoMudanças
v19Adicionado

.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 nome dado 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 , passar o nome da caixa de correio para eliminar.

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

$name:="Bills"+$transporter.getDelimiter()+"Atlas Corp"
$status:=$transporter.subscribe($name) If ($status.success)
ALERT("Mailbox subscription successful!")
Else
ALERT("Error: "+$status.statusText)
End if
Else
ALERT("Error: "+$status.statusText)
End if
End if

.expunge()

Histórico
VersãoMudanças
v18 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 marcador "apagada" do servidor de correio IMAP. O marcador "apagada" pode ser definida 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órico
VersãoMudanças
v20Os falsos valores são ignorados.
v18 R5name é opcional
v18 R4Adicionado

.getBoxInfo( { name : Text }) : Object

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

|

Descrição

A função .getBoxInfo() devolve um objeto boxInfo correspondente à maibox actual, ou a caixa de correio nome. Esta função devolve a mesma informação que .selectBox() sem alterar a caixa de correio actual.

No parâmetro opcional nome , passe 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() .

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

Objeto devolvido

O objeto boxInfo retornado contém as funcionalidades abaixo:

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órico
VersãoMudanças
v18 R4Adicionado
v19Adicionar 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() devolve uma colecção de caixas de correio descrevendo 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 `` , passe um objeto contendo valores para filtrar as caixas de correio devolvidas. Pode passar:

PropriedadeTipoDescrição
isSubscribedParâmetros
  • True* para devolver apenas caixas de correio inscritas
  • False* para devolver 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 a selecção da caixa de correio:
    • true - a caixa de correio pode ser seleccionada
    • falso - a caixa de correio não pode ser seleccionada
    [].inferiorbooleanIndica se os direitos de acesso permitem ou não a criação de uma hierarquia inferior na caixa de correio:
    • true - pode ser criado um nível inferior
    • falso - 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. Por exemplo, pode conter novas mensagens.
    • falso - A caixa de correio não foi marcada como "interessante" pelo servidor.

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

    • Se não houver uma conexão aberta, .getBoxList() irá abrir uma conexão.
    • Se a conexão não tiver sido utilizada desde o atraso da ligação determinado (ver IMAP Novo transportador), a função .checkConnection( ) é 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órico
    VersãoMudanças
    v18 R4Adicionado

    .getDelimiter() : Text

    ParâmetroTipoDescrição
    ResultadosText<-Carácter delimitador da hierarquia

    |

    Descrição

    A função .getDelimiter() devolve o carácter utilizado 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.

    • Se não houver uma ligação aberta, .getDelimiter() irá abrir uma ligação.
    • Se a ligação não tiver sido utilizada desde o atraso da ligação designada , a função .checkConnection() é 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

    .getMail()

    Histórico
    VersãoMudanças
    v18 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<-Email objecto

    |

    Descrição

    A função .getMail() A função .getMail(). 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 indicando o número de sequência da mensagem a recuperar ou
    • msgID, um texto valor indicando a identificação única da mensagem a recuperar.

    O parâmetro opcional opções permite-lhe passar um objecto definindo instruções adicionais para o tratamento da 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 devolve Null se msgID designar uma mensagem inexistente,
    • Se nenhuma caixa de correio for seleccionada com a função .selectBox() , é gerado um erro,
    • Se não houver uma ligação aberta, .getMail() abrirá uma ligação a última caixa de correio especificada com .selectBox()`.

    Resultados

    .getMail() devolve um Email object com as seguintes propriedades IMAP específicas: id, recebidoEm, e tamanho.

    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órico
    VersãoMudanças
    v18 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<-Parâmetro objecto
    • uma colecção de Email objects e
    • uma colecção de identificações ou números para mensagens em falta, se existirem

    |

    Descrição

    A função .getMIMEAsBlob() devolve o BLOB contendo o conteúdo MIME para a mensagem correspondente a msgNumber ou msgID na caixa de correio designada pelo IMAP_transporter.

    Primeira sintaxe:

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

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

    No parâmetro ids , passe uma colecção de IDs para as mensagens a devolver. Pode obter as identificações com .getMail().

    O parâmetro opcional opções permite definir as partes das mensagens a serem devolvidas. Ver a tabela Opções abaixo para 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 num intervalo sequencial. Se passar um número negativo (startMsg <= 0), a primeira mensagem da caixa de correio será utilizada 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 passar um número negativo (endMsg <= 0), a última mensagem da caixa de correio será utilizada como o fim da sequência.

    O parâmetro opcional opções permite definir as partes das mensagens a serem devolvidas.

    Opções

    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 seleccionada com o comando .selectBox(), é gerado um erro.
    • Se não houver uma ligação aberta, .getMails() abrirá uma ligação a última caixa de correio especificada com .selectBox().

    Resultados

    .getMails() devolve um objecto contendo as seguintes colecções:

    PropriedadeTipoDescrição
    listaCollectionColeção de Email objetos. Se não forem encontrados objetos e-mail, uma coleção vazia é devolvida.
    notFoundCollectionColeção:
    • 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 colecção vazia é devolvida 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" //Mandatory
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

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

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

    If($boxInfo.mailCount>0)
    // retrieve the headers of the last 20 messages without marking them as read
    $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órico
    VersãoMudanças
    v18 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() copia as mensagens definidas por msgsIDs ou allMsgs para a Caixa de destino ** no servidor IMAP.

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

    • msgNumber, um valor inteiro indicando o número de sequência da mensagem a recuperar ou
    • msgID, um texto valor indicando a identificação única da mensagem a recuperar.

    O parâmetro opcional updateSeen permite-lhe especificar se a mensagem está marcada como "vista" na caixa de correio. Pode passar:

    • Verdadeiro - para marcar a mensagem como "vista" (indicando que a mensagem foi lida)
    • False - para deixar o estado "seen" da mensagem intacto
      • A função devolve um BLOB vazio se msgNumber ou msgID* designar uma mensagem inexistente,
      • Se nenhuma caixa de correio for seleccionada com o comando .selectBox(), é gerado um erro,
      • Parâmetros

    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órico
    VersãoMudanças
    v17 R5Adicionado

    .host : Text

    Descrição

    A propriedade .host contém o nome ou o endereço IP do servidor anfitrião. Utilizado para transacções postais (SMTP, POP3, IMAP).

    .logFile

    Histórico
    VersãoMudanças
    v17 R5Adicionado

    .logFile : Text

    Descrição

    A propriedade .logFile contém o caminho do arquivo de registo alargado definido (se existir) para a ligação de correio. Pode ser relativo (à pasta atual de Logs) ou absoluto.

    Ao contrário dos arquivos de registo regulares (ativados através do comando SET DATABASE PARAMETER ), os arquivos de registo armazenam o conteúdo MIME de todos os e-mails enviados e não têm qualquer limite de tamanho. Para mais informações sobre arquivos de registo estendidos, consultar:

    .move()

    Histórico
    VersãoMudanças
    v18 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 seleccionada
    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 a destinationBox no servidor IMAP.

    Pode passar:

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

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

    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órico
    VersãoMudanças
    v18 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 sequenciais para IDs únicos IMAP para as mensagens no intervalo sequencial designado por startMsg e endMsg na caixa de correio actualmente seleccionada.

    No parâmetro startMsg , passe um valor inteiro correspondente ao número da primeira mensagem num intervalo sequencial. Se passar um número negativo (startMsg <= 0), a primeira mensagem da caixa de correio será utilizada 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 passar um número negativo (endMsg <= 0), a última mensagem da caixa de correio será utilizada 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órico
    VersãoMudanças
    v20Suporta palavras-chave personalizadas
    v18 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 flags do msgIDs para as palavras-chave especificadas.

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

    • 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 seleccionada:

      ParâmetrosValorComentário
      IMAP all1Seleccione todas as mensagens na caixa de correio seleccionada

    The keywords parameter lets you pass an object with keyword values for specific flags to remove from 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

    Consultar .addFlags() para mais informações sobre flags personalizadas.

    • 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órico
    VersãoMudanças
    v19Adicionado

    .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() muda 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, passar o nome da caixa de correio para renommer.

    Passar o novo nome para a 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 $server,$boxInfo,$result : 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"

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

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

    If($boxInfo.mailCount>0)
    // recupera 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 if

    .port

    Histórico
    VersãoMudanças
    v17 R4Adicionado

    .port : Integer

    Descrição

    A propriedade .port contém o número do porto utilizado para as transações postais. Por padrão, se a propriedade port não tiver sido definida no objeto server (utilizado para criar o objecto transportador com SMTP New transporter, POP3 New transporter, IMAP New transporter), a porta utilizada é:

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

    .searchMails()

    Histórico
    VersãoMudanças
    v18 R5Adicionado

    .searchMails( searchCriteria : Text ) : Collection

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

    |

    Descrição

    Esta função é baseada na especificação do protocolo IMAP.

    A função .searchMails() procura por mensagens que correspondam ao dado searchCriteria na caixa de correio actual. searchCriteria consiste em uma ou mais chaves de pesquisa.

    searchCriteria é um parâmetro de texto que lista uma ou mais chaves de pesquisa (ver Chaves de pesquisa autorizadas abaixo) associadas ou não a valores a procurar. 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 a searchCriteria for uma cadeia nula, a pesquisa será equivalente a uma "seleccionar tudo".
    • Se a searchCriteria inclui múltiplas chaves de pesquisa, o resultado é a intersecção (E função) 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.

    • Pode utilizar os operadores OR ou NOT como se segue:
    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 charset da string searchCriteria . Portanto, deve converter a string searchCriteria no charset especificado se utilizar a especificação [CHARSET] (ver 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 string que deve ser formatada da seguinte forma: date-day+"-"+date-month+"-"+dateyear onde data-dia indica o número do dia do mês (máx. 2 caracteres), data-mês indica o nome do mês (Jan/Fev/Mar/Abr/Abr/May/Jun/Jul/Aug/Sep/Oct/Dec) e data-ano indica o ano (4 caracteres). Exemplo: searchCriteria = SENTBEFORE 1-Fev-2020 (uma data não precisa normalmente de ser citada uma vez que não contém quaisquer caracteres especiais)

    • 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 utilizam strings uma mensagem corresponde à chave se a corda for uma substring 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 "MISTURADO"

    • Chaves de pesquisa com um valor de marcador: o valor pode aceitar uma ou várias palavras-chave (incluindo marcadores 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 de correio com 15 mensagens. searchCriteria = 1:5 RESPOSTA pesquisa na selecção de mensagens a partir da sequência de mensagens número 1 a 5 para mensagens que tenham o marcador \i1 searchCriteria= 2,4 RESPOSTA pesquisa na selecção de mensagens (mensagens números 2 e 4) por mensagens que tenham o marcador \i1 searchCriteria= 2,4 ANSWERED pesquisa na selecção de mensagens (mensagens números 2 e 4) por mensagens que tenham o marcador \Answered.

    Chaves de pesquisa autorizadas

    ALL: Todas as mensagens em mailbox.
    ANSWERED: Mensagens com marcador \Answered .
    UNANSWERED: Mensagens sem o marcador \Answered.
    DELETED: Mensagens com marcador \Deleted.
    UNDELETED: Mensagens com o marcador \Deleted .
    DRAFT: Mensagens com o marcador \Draft.
    UNDRAFT: Mensagens sem o marcador \Draft.
    FLAGGED: Mensagens com o marcador \Flagged.
    UNFLAGGED:Mensagens sem o marcador \Flagged .
    RECENT: Mensagens com o marcador \Recent.
    OLD: Mensagens sem o marcador \Recent .
    SEEN: Mensagens com o marcador \Seen.
    UNSEEN: Mensagens sem o marcador \Seen.
    NEW: Mensagens com o marcador \Recent mas não o marcador \Seen. Isto é funcionalmente equivalente a "(RECENTEMENTE UNSEENTE)".
    KEYWORD flag**: Mensagens com o conjunto de palavras-chave especificado.
    UNKEYWORD flag**: Mensagens que não têm a palavra-chave especificada.
    *ANTES da data ***: Mensagens cuja data interna é anterior à data especificada.
    *ANTES da data ***: Mensagens cuja data interna está dentro da data especificada.
    DESDE data**: Mensagens cuja data interna se encontra dentro ou fora da data especificada.
    SENTBEFORE data**: Mensagens cujo cabeçalho da data é anterior à data especificada.
    SENTON data**: Mensagens cujo cabeçalho da Data se encontra dentro da data especificada.
    SENTSINCE data**: Mensagens cujo cabeçalho da Data está dentro ou mais tarde do que a data especificada.
    TO string**: Mensagens que contêm a string especificada no cabeçalho da TO.
    DE string**: Mensagens que contêm a cadeia de caracteres especificada no cabeçalho DE.
    CC string**: Mensagens que contêm a cadeia de caracteres especificada no cabeçalho CC.
    BCC string**: Mensagens que contêm a cadeia de caracteres especificada no cabeçalho BCC.
    SUBJECT string**: Mensagens que contêm a cadeia de caracteres especificada no cabeçalho do Subject.
    BODY string**: Mensagens que contêm a cadeia de caracteres especificada no corpo da mensagem.
    TEXTO cadeia de caracteres**: Mensagens que contêm a cadeia de caracteres especificada no cabeçalho ou no corpo da mensagem.
    HEADER nome de campo* *corda**: Mensagens que têm um cabeçalho com o nome de campo especificado e que contêm a corda especificada no corpo do campo.
    UID message-UID**: Mensagens com identificadores únicos correspondentes ao conjunto de identificadores únicos especificado.
    LARGER n**: Mensagens com um tamanho maior do que o número de bytes especificado.
    SMALLER n**: Mensagens com um tamanho menor do que o número especificado de bytes.
    NOT search-key**: Mensagens que não correspondem à chave de pesquisa especificada.
    OU search-key1* *search-key2**: Mensagens que correspondem a qualquer uma das chaves de pesquisa.

    .selectBox()

    Histórico
    VersãoMudanças
    v20Note that False values are ignored.
    v18 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

    selecciona a caixa de correio name como a caixa de correio actual A função .selectBox(). 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 devolve Null se name designar uma caixa de correio inexistente.
    • Se não houver uma conexão aberta, .selectBox() irá abrir uma conexão.
    • Se a conexão não tiver sido utilizada desde o atraso da ligação determinado (ver IMAP New transpor ter), a função .checkConnection() é automaticamente chamada.

    Objeto devolvido

    O objeto boxInfo retornado contém as funcionalidades abaixo:

    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 string permanentFlags incluir marcador especial *, significa que o servidor suporta marcadores (flags) personalizadas.

    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órico
    VersãoMudanças
    v19Adicionado

    .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 ou remover a caixa de correio especificada de/para o 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 name , passe o nome da caixa de correio para adicionar (subscrever) às suas caixas de correio "subscritas".

    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órico
    VersãoMudanças
    v19Adicionado

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

    // renomear caixa de correio
    $status:=$transporter.renameBox("Invoices"; "Bills") If ($status.success)
    ALERT("Mailbox renaming successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .user

    Histórico
    VersãoMudanças
    v17 R4Adicionado

    .user : Text

    Descrição

    A propriedade .user contém o nome de usuário utilizado para autenticação no servidor de correio.