Recevoir des e-mails avec le protocole IMAP

Traduit automatiquement de Deepl

Dans 4D v18, nous avons introduit une nouvelle façon d’envoyer des emails. Ensuite, dans 4D v18 R2, nous avons ajouté une nouvelle façon de récupérer les emails en utilisant POP3. Maintenant, dans 4D v18 R4, nous faisons les premiers pas vers une nouvelle façon de gérer le protocole IMAP. Comme nous l’avons fait pour SMTP et POP3, il existe une nouvelle commande IMAP New transporter pour gérer le protocole IMAP.

Le protocole IMAP (Internet Message Access Protocol) est un protocole standard de l’Internet utilisé par les clients de messagerie pour récupérer les messages électroniques sur un serveur de messagerie. Ce protocole permet de gérer plusieurs boîtes aux lettres, de télécharger des e-mails, d’effectuer des recherches sur le serveur, de gérer l’état des messages, et bien plus encore !

Et avec cette première fonctionnalité IMAP, vous pouvez ajouter des méthodes au transporteur pour : avoir la liste des boîtes aux lettres disponibles, sélectionner une boîte aux lettres, et recevoir des emails de la boîte aux lettres sélectionnée. Voyons comment.

L’IDH ci-dessous montre comment recevoir du courrier électronique via IMAP :

HDI recevoir des emails via IMAP

créer un transporteur IMAP

Comme pour SMTP et POP3, lorsque vous utilisez le protocole IMAP, vous devez d’abord créer un transporteur (via la commande IMAP New transporter ) :

$server:=New object
$server .host:= "yourIMAPhost.com"
$server .port:=995
$server .user:= "4D.IMAP@mail.com"
$server .password:= "XXXXXX"
// Create a transporter from your server information
$IMAP_Transporter:=IMAP New transporter($server)

Sélectionner la boîte aux lettres

Comme IMAP prend en charge plusieurs boîtes aux lettres, la première chose à faire est de spécifier la boîte aux lettres que vous voulez.

Vous pouvez obtenir une liste de toutes les boîtes aux lettres disponibles sur votre serveur de messagerie avec la méthode getBoxList méthode :

$boxList:=$IMAP_Transporter.getBoxList()
Alert ("Votre premier nom de boîte aux lettres est "+$boxList[0].name)

Une fois que vous connaissez le nom de la boîte aux lettres spécifique dont vous avez besoin, utilisez simplement la méthode selectBox:

$boxInfo:=$transporter.selectBox($boxList[$boxId].name)

Cette commande renvoie des informations utiles telles que

  • le nombre d’e-mails dans la boîte aux lettres
  • le nombre de messages récents

Télécharger le courrier électronique

Vous avez deux façons d’identifier le courrier que vous voulez télécharger :

  • La première consiste à utiliser la position de l’e-mail dans la boîte aux lettres, comme vous le feriez pour POP3. Par exemple, si vous voulez télécharger le dernier courrier reçu :

$mail:=$transporter.getMail($boxInfo.mailCount)

  • La seconde consiste à utiliser l’attribut id de l’objet e-mail renvoyé par le serveur IMAP. Cette méthode est la meilleure à utiliser lorsque vous voulez récupérer un courriel spécifique puisque la position d’un courriel dans la boîte aux lettres peut être modifiée lorsque vous supprimez des courriels :

$mail:=$transporter.getMail($emailId)

Comme nous l’avons dit précédemment, il s’agit de la première fonctionnalité d’IMAP. Il y en aura d’autres. Restez à l’écoute !

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.