Os utilizadores modernos esperam que as notificações de e-mail apareçam instantaneamente quando chega um novo e-mail. O 4D 21 R3 introduz o suporte para notificações IMAP IDLE, trazendo a monitorização de e-mails em tempo real diretamente para as suas aplicações. Em vez de depender exclusivamente da sincronização periódica, agora pode reagir instantaneamente quando uma caixa de correio sofre alterações.
Com o suporte a IMAP IDLE no IMAPTransporter, a sua aplicação 4D pode re subscribe ar às notificações da caixa de correio. Em vez de perguntar: «Houve alguma alteração?», o servidor informa-o: «Acabou de haver uma alteração.» E não se trata apenas de novas mensagens. Pode reagir a:
- Um novo e-mail a ser criado
- Uma mensagem a ser eliminada
- Uma marcação a ser modificada
- Uma alteração no estado da caixa de correio
Para suportar notificações de e-mail, ampliamos as capacidades IMAP do 4D, aprimorando o comando IMAP New transporter com um novo parâmetro listener. Este novo objeto listener permite que os desenvolvedores registrem funções de retorno de chamada.
Eventos de notificação suportados
O objeto parameter.listener suporta as seguintes chamadas de retorno:
- listener.onMailCreated(): Acionado quando uma nova mensagem é detetada na caixa de correio atual.
- listener.onMailDeleted(): Acionado quando uma mensagem é eliminada permanentemente.
- listener.onFlagsModified(): Acionado quando os indicadores da mensagem mudam, por exemplo, quando uma mensagem é marcada como lida.
Notificações de Início/Fim
O objeto 4D.IMAPTransporter expõe uma propriedade notifier com métodos de controlo do ciclo de vida:
- notifier.start(): Subscreve notificações do servidor e ativa o seu notificador IMAP.
- notifier.stop(): Cancela a subscrição do servidor e do seu notificador IMAP.
Por exemplo, pode implementar uma classe responsável por gerir os seus ouvintes de e-mail de forma centralizada:
// Class IMAPListener
// Triggered when a new email is created on the server
Function onMailCreated($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("You have a new mail!")
// Triggered when an email is deleted
Function onMailDeleted($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("Message deleted")
// Triggered when message flags change (e.g., read/unread)
Function onFlagsModified($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("Flag modified")
E pode iniciar o notificador quando for necessário no seu código:
var $parameter:={}
$parameter.authenticationMode:=IMAP authentication OAUTH2 // Using OAuth2 for authentication
$parameter.host:="Outlook.office365.com" // IMAP server host
$parameter.port:=993 // IMAP SSL port
$parameter.accessTokenOAuth2 := $myToken // Token received from the OAuth server
$parameter.user:="myadress@email.com" // User email address
// Listener Intialization
$parameter.listener :=cs.IMAPListener.new()
var $myTransporter:=IMAP New transporter($parameter)
// Start the notifier
$myTransporter.notifier.start()
Conclusão
Com as notificações IMAP IDLE integradas no transportador IMAP New, as aplicações 4D podem adotar uma abordagem em tempo real e orientada por eventos para a sincronização de e-mail. Os utilizadores já esperam atualizações instantâneas das suas ferramentas de mensagens, e esta melhoria permite que as suas soluções 4D ofereçam a mesma experiência perfeita.
De momento, não é possível deixar comentários nesta publicação.