Para permitir que a sua solução se integre facilmente com outros clientes de correio electrónico, é frequentemente necessário acrescentar informações tais como “já visto” ou “urgente”. O protocolo IMAP permite-lhe associar uma lista de bandeiras com uma mensagem para gerir esta informação adicional. 4D v18 R6 inclui um conjunto de funções para o objecto IMAP Transporter para adicionar ou remover bandeiras IMAP.
Com o protocolo IMAP é possível gerir cinco bandeiras :
- \Visto: A mensagem foi lida
- \Respondeu: A mensagem foi respondida
- \Flagged: A mensagem é marcada como “assinalada” para atenção urgente/especial
- \Apagado: A mensagem é marcada como “a ser apagada”. Note-se que a remoção efectiva tem efeito quando a expunge() é chamada, quando se muda a caixa de correio, ou se fecha a ligação. Esta bandeira já é adicionada pela delete() função
- \Desenho: A mensagem não completou a composição (marcada como um rascunho).
Acrescentar bandeiras
Para gerir as bandeiras de correio electrónico, é necessário estar ligado ao seu servidor de correio e ter uma caixa de correio seleccionada. Para os exemplos seguintes, utilizaremos a caixa de correio electrónico da caixa de entrada:
var $transporter : 4D.IMAPTransporter
$transporter :=IMAP New transporter($serverInfo)
$boxInfo :=$transporter.selectBox("caixa de entrada")
Para adicionar bandeiras em e-mails, como no objecto de e-mail, crie um objecto de palavras-chave que contenha todas as bandeiras que pretende definir, e passe-as como parâmetro para o addFlags() função. Por exemplo, se quiser marcar alguns emails como rascunho:
$mails:=$transporter.searchMails("ASSUNTO \ 4D\")
$keywords :=New object
$ keywords .$draft:=True
$transporter .
addFlags($mails; $
keywords )
Remover bandeiras
Da mesma forma, para remover bandeiras dos emails, criar um objecto de palavras-chave, e passá-lo para a função removeFlags() função. Por exemplo, se quiser remover todas as bandeiras apagadas na sua caixa de correio para evitar a eliminação dos e-mails marcados:
$mails:=$transporter.searchMails("DELETED")
$ keywords :=New object
$ keywords .$deleted:=True
$transporter .
removeFlags($mails; $
keywords )
Expandir e-mails
Num post de blog anterior, mostramos-lhe como adicionar a /Deleted flag a um e-mail com a função delete() função.
Para além da função delete() função, acrescentámos a nova expunge() para lhe permitir aplicar a /Deleted flag sem esperar pela mudança da caixa de correio ou pelo fecho da ligação. Por exemplo, se quiser remover todos os e-mails da sua caixa de correio electrónico não desejado:
$boxInfo:=$transporter.selectBox("Junk Email")
// marks all the email in the current mail box for deletion
$status :=$transporter.delete(IMAP all)
// deletes all the marked emails
$transporter .
expunge()
Consulte a documentação para saber mais sobre as novas funcionalidades!