Pour permettre à votre solution de s’intégrer harmonieusement à d’autres clients de messagerie, vous devez souvent ajouter des informations telles que « déjà vu » ou « urgent ». Le protocole IMAP vous permet d’associer une liste de drapeaux à un message pour gérer ces informations supplémentaires. 4D v18 R6 comprend un ensemble de fonctions pour l’objet IMAP Transporter permettant d’ajouter ou de supprimer des drapeaux IMAP.
Avec le protocole IMAP, vous pouvez gérer cinq drapeaux :
- \Seen : Le message a été lu
- \Answered : Le message a été répondu
- \Flagged : Le message est marqué comme « marqué » pour une attention urgente/spéciale
- \Deleted : Le message est marqué comme « à supprimer ». Notez que la suppression effective prend effet lorsque la fonction expunge() est appelée, lorsque vous changez de boîte aux lettres ou lorsque vous fermez la connexion. Cet indicateur est déjà ajouté par la delete() fonction
- \Draft : La composition du message n’est pas terminée (il est marqué comme étant un brouillon).
Ajouter des drapeaux
Pour gérer les indicateurs d’e-mail, vous devez être connecté à votre serveur de messagerie et avoir sélectionné une boîte aux lettres. Pour les exemples suivants, nous utiliserons la boîte de réception:
var $transporter : 4D.IMAPTransporter
$transporter :=IMAP New transporter($serverInfo)
$boxInfo :=$transporter.selectBox("inbox")
Pour ajouter des drapeaux dans les messages, comme dans l’objet email, créez un objet keywords qui contient tous les drapeaux que vous voulez définir, et passez-les en paramètre à la fonction addFlags() comme paramètre. Par exemple, si vous voulez marquer certains emails comme brouillons :
$mails:=$transporter.searchMails("SUJET \"4D\"")
$keywords :=New object
$ keywords .$draft:=True
$transporter .
addFlags($mails; $
keywords )
Supprimer les drapeaux
De la même manière, pour supprimer les drapeaux des emails, créez un objet keywords, et passez-le à la fonction removeFlags() à la fonction. Par exemple, si vous voulez supprimer tous les drapeaux \Deleted dans votre boîte aux lettres pour éviter la suppression des e-mails marqués :
$mails:=$transporter.searchMails("SUPPRIMÉ")
$ keywords :=New object
$ keywords .$deleted:=True
$transporter .
removeFlags($mails; $
keywords )
Emails supprimés
Dans un précédent article de blog, nous vous avons montré comment ajouter le drapeau /Deleted à un e-mail avec la fonction delete() à un e-mail.
En plus de la fonction delete() nous avons ajouté la nouvelle fonction expunge() pour vous permettre d’appliquer le drapeau /Deleted sans attendre le changement de boîte aux lettres ou la fermeture de la connexion. Par exemple, si vous voulez supprimer tous les courriels de votre boîte aux lettres de courrier indésirable :
$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()
Consultez la documentation pour en savoir plus sur les nouvelles fonctionnalités !