IMAPTransporter
A classe IMAPTransporter
permite-lhe recuperar mensagens a partir de um servidor de correio electrónico IMAP.
Objecto 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 nome dado |
.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
Release | Mudanças |
---|---|
18 R4 | Adicionado |
IMAP New transporter( server : Object ) : 4D.IMAPTransporter
Parâmetro | Tipo | Descrição | |
---|---|---|---|
server | Object | -> | Informação de servidor de correio |
Resultados | 4D.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:
server | Valor padrão (se omitido) |
---|---|
.acceptUnsecureConnection : Boolean Verdadeiro se 4D for permitido estabelecer uma ligação não encriptada | False |
.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 correio | 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 ligação ao servidor | 300 |
.connectionTimeOut : Integer o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout | 30 |
.host : Text o nome ou o endereço IP do servidor anfitrião | obrigatório |
.logFile : Text o caminho do arquivo de registo alargado definido (se existir) para a ligação de correio | nenhum |
.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 postais | 993 |
.user : Text o nome de usuário utilizado para autenticação no servidor de correio | nenhum |
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âmetro | Tipo | Descrição | |
---|---|---|---|
server | Object | -> | Informação de servidor de correio |
Resultados | 4D.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
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgIDs | Collection | -> | 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 |
keywords | Object | -> | Flags de palavras chaves a adicionar |
Resultados | Object | <- | 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âmetros | Valor | Comentário |
---|---|---|
IMAP all | 1 | Seleccione todas as mensagens na caixa de correio seleccionada |
The keywords
parameter lets you pass an object with keyword values for specific flags to add to msgIDs
. Pode passar qualquer uma das seguintes palavras-chave:
Parâmetro | Tipo | Descrição |
---|---|---|
$draft | Parâmetros | True para adicionar o marcador "draft" na mensagem |
$seen | Parâmetros | True para adicionar o marcador "seen" na mensagem |
$flagged | Parâmetros | True para adicionar o marcador "flagged" na mensagem |
$answered | Parâmetros | True para adicionar o marcador "answered" na mensagem |
$deleted | Parâmetros | True para adicionar o marcador "deleted" na mensagem |
- Os valores falsos são ignorados.
- 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.append( mailObj : Objecto ; destinationBox : Texto ; opções : Objecto ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
mailObj | Object | -> | Objeto Email |
destinationBox | Text | -> | Caixa de email que vai receber o objeto Email |
options | Object | -> | Objeto que contém informações do charset |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição |
---|---|---|
headerCharset | Text | Charset 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 |
bodyCharset | Text | Charset 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âmetros | Valor | Comentário |
---|---|---|
mail mode ISO2022JP | US-ASCII_ISO-2022-JP_UTF8_QP |
|
mail mode ISO88591 | ISO-8859-1 |
|
mail mode UTF8 | US-ASCII_UTF8_QP | headerCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & Citação-printável (valor por padrão) |
modo de correio UTF8 na base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII se possível, senão UTF-8 & base64 |
Objeto devolvido
A função devolve um objecto que descreve o estado IMAP:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.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:
Valor | Constantes | Comentário |
---|---|---|
CRAM-MD5 | IMAP authentication CRAM MD5 | Autenticação usando o protocolo CRAM-MD5 |
LOGIN | IMAP authentication login | Autenticação usando o protocolo LOGIN |
OAUTH2 | Autenticação IMAP OAUTH2 | Autenticação usando o protocolo OAuth2 |
PLAIN | IMAP authentication plain | Autenticação usando o protocolo PLAIN |
.checkConnection()
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.checkConnection() : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | boolean | Verdadeiro se a verificação for bem sucedida, Falso de outra forma | |
status | number | (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) | |
statusText | text | Mensagem de estado devolvida pelo servidor de correio, ou último erro devolvido na pilha de erros 4D | |
errors | collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor de correio) | |
[ ].errCode | number | Código de erro 4D | |
[ ].message | text | Descrição do erro 4D | |
[ ].componentSignature | text | Assinatura da componente interna que devolveu o erro |
.checkConnectionDelay
Histórico
Release | Mudanças |
---|---|
18 R4 | Adicionado |
.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
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.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
Release | Mudanças |
---|---|
18 R5 | Adicionado |
.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgsIDs | Collection | -> | Coleção de identificadores únicos de mensagens (strings) |
allMsgs | Integer | -> | IMAP all : Todas as mensagens na caixa de correio seleccionada |
destinationBox | Text | -> | Caixa de correio para receber mensagens copiadas |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
19 | Adicionado |
.createBox( name : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
name | Text | -> | Nome da nova caixa de correio |
Resultados | Object | <- | Estado da operação de criação da caixa de correio |
|
Descrição
A função .createBox()
cria uma caixa de correio com o nome
dado. 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
18 R5 | Adicionado |
.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgsIDs | Collection | -> | Coleção de identificadores únicos de mensagens (strings) |
allMsgs | Integer | -> | IMAP all : Todas as mensagens na caixa de correio seleccionada |
Resultados | Object | <- | 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
, oIMAP 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
19 | Adicionado |
.deleteBox( name : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
name | Text | -> | Nome da caixa de correio a apagar |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.expunge() : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
18 R5 | name é opcional |
|18 R4|Adicionado|
.getBoxInfo( { name : Text }) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
name | Text | -> | Nome da nova caixa de correio |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição |
---|---|---|
name | text | Nome da nova caixa de correio |
mailCount | number | Número de mensagens na caixa de email |
mailRecent | number | Número de mensagens com o marcador "recente" (indicando novas mensagens) |
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
Release | Mudanças |
---|---|
18 R4 | Adicionado |
19 | Adicionar parâmetro isSubscribed |
.getBoxList( { parameters : Object } ) : Collection
Parâmetro | Tipo | Descrição | |
---|---|---|---|
parameters | Object | -> | Parâmetros |
Resultados | Collection | <- | 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:
Propriedade | Tipo | Descrição |
---|---|---|
isSubscribed | Parâmetros |
Resultados
Cada objecto da coleção devolvida contém as seguintes propriedades:
Propriedade | Tipo | Descrição |
---|---|---|
[].name | text | Nome da nova caixa de correio |
[].selectable | boolean | Indica se os direitos de acesso permitem ou não a selecção da caixa de correio:
|
[].inferior | boolean | Indica se os direitos de acesso permitem ou não a criação de uma hierarquia inferior na caixa de correio:
|
[].interesting | boolean | Indica se a caixa de correio 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
Release | Mudanças |
---|---|
18 R4 | Adicionado |
.getDelimiter() : Text
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Text | <- | 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
Release | Mudanças |
---|---|
18 R4 | Adicionado |
.getMail( msgNumber: Integer { ; options : Object } ) : Object
.getMail( msgID: Text { ; options : Object } ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgNumber | Integer | -> | Número sequencial da mensagem |
msgID | Text | -> | ID única da mensagem |
options | Object | -> | Instruções de tratamento de mensagens |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição |
---|---|---|
updateSeen | boolean | Se Verdadeiro, a mensagem é marcada como "visto" na caixa de correio. Se falso, a mensagem não é marcada como "visto". Valor padrão: True |
withBody | boolean | Pass 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
Release | Mudanças |
---|---|
18 R5 | Adicionado |
.getMails( ids : Collection { ; options : Object } ) : Object
.getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
ids | Collection | -> | Colecção de identificação da mensagem |
startMsg | Integer | -> | Número sequencial da primeira mensagem |
endMsg | Integer | -> | Número sequencial da última mensagem |
options | Object | -> | Instruções de tratamento de mensagens |
Resultados | Object | <- | Parâmetro objecto
|
|
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
Propriedade | Tipo | Descrição |
---|---|---|
updateSeen | Parâmetros | Se 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 |
withBody | Parâmetros | Pass 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:
Propriedade | Tipo | Descrição |
---|---|---|
lista | Collection | Coleção de Email objetos. Se não forem encontrados objetos e-mail, uma coleção vazia é devolvida. |
notFound | Collection | Coleção:
|
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
Release | Mudanças |
---|---|
18 R4 | Adicionado |
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
.getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgNumber | Integer | -> | Número sequencial da mensagem |
msgID | Text | -> | ID única da mensagem |
updateSeen | Parâmetros | -> | Se Verdadeiro, a mensagem é marcada "visto" na caixa de correio. Se Falso, a mensagem é deixada intocada. |
Resultados | BLOB | <- | 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
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.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
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.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:
- SMTP connections - 4DSMTPLog.txt
- POP3 connections - 4DPOP3Log.txt
- IMAP connections - 4DIMAPLog.txt
.move()
Histórico
Release | Mudanças |
---|---|
18 R5 | Adicionado |
.move( msgsIDs : Collection ; destinationBox : Text ) : Object
.move( allMsgs : Integer ; destinationBox : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgsIDs | Collection | -> | Coleção de identificadores únicos de mensagens (strings) |
allMsgs | Integer | -> | IMAP all : Todas as mensagens na caixa de correio seleccionada |
destinationBox | Text | -> | Caixa de correio para receber mensagens movimentadas |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
18 R5 | Adicionado |
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection
Parâmetro | Tipo | Descrição | |
---|---|---|---|
startMsg | Integer | -> | Número sequencial da primeira mensagem |
endMsg | Integer | -> | Número sequencial da última mensagem |
Resultados | Collection | <- | 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.removeFlags( msgIDs : Collection ; keywords : Object ) : Object
.removeFlags( msgIDs : Text ; keywords : Object ) : Object
.removeFlags( msgIDs : Longint ; keywords : Object ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
msgIDs | Collection | -> | 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 |
keywords | Object | -> | Flags de palavras-chave a remover |
Resultados | Object | <- | 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âmetros | Valor | Comentário |
---|---|---|
IMAP all | 1 | Seleccione 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âmetro | Tipo | Descrição |
---|---|---|
$draft | Parâmetros | True para remover o flag "draft" na mensagem |
$seen | Parâmetros | True para remover a flag "seen" na mensagem |
$flagged | Parâmetros | True para remover a flag "flagged" na mensagem |
$answered | Parâmetros | True para remover a flag "answered" na mensagem |
$deleted | Parâmetros | True para remover a flag "deleted" na mensagem |
Note-se que os valores falsos são ignorados.
Objeto devolvido
A função devolve um objecto que descreve o estado IMAP:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
19 | Adicionado |
.renameBox( currentName : Text ; newName : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
currentName | Text | -> | Nome da caixa de correio actual |
newName | Text | -> | Nome da nova caixa de correio |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.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
Release | Mudanças |
---|---|
18 R5 | Adicionado |
.searchMails( searchCriteria : Text ) : Collection
Parâmetro | Tipo | Descrição | |
---|---|---|---|
searchCriteria | Text | -> | Critérios de pesquisa |
Resultados | Collection | <- | 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
ouConvert 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 \i1searchCriteria= 2,4 RESPOSTA
pesquisa na selecção de mensagens (mensagens números 2 e 4) por mensagens que tenham o marcador \i1searchCriteria= 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
Release | Mudanças |
---|---|
18 R4 | Adicionado |
.selectBox( name : Text { ; state : Integer } ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
name | Text | -> | Nome da nova caixa de correio |
state | Integer | -> | Estado de acesso à caixa de correio |
Resultados | Object | <- | 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âmetros | Valor | Comentário |
---|---|---|
IMAP read only state | 1 | A 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 state | 0 | A 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:
Propriedade | Tipo | Descrição |
---|---|---|
name | Text | Nome da nova caixa de correio |
mailCount | number | Número de mensagens na caixa de email |
mailRecent | number | Número de mensagens com a flag "recent" |
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
Release | Mudanças |
---|---|
19 | Adicionado |
.subscribe( name : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
name | Text | -> | Nome da nova caixa de correio |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
19 | Adicionado |
.unsubscribe( name : Text ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
name | Text | -> | Nome da nova caixa de correio |
Resultados | Object | <- | 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:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se a operação for bem sucedida, Falso caso contrário | |
statusText | Text | Mensagem de estado devolvida pelo servidor IMAP, ou último erro devolvido na pilha de erros 4D | |
errors | Collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor IMAP) | |
[].errcode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura 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
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.user : Text
Descrição
A propriedade .user
contém o nome de usuário utilizado para autenticação no servidor de correio.