Gérer les drapeaux IMAP

Traduit automatiquement de Deepl

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 !

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.