IMAPTransporter
La classe IMAPTransporter
vous permet de récupérer des messages à partir d'un serveur de messagerie IMAP.
Objet IMAP Transporter
Les objets IMAP Transporter sont instanciés avec la commande IMAP New transporter. Leurs propriétés et fonctions sont les suivantes :
.acceptUnsecureConnection : Boolean True si 4D est autorisé à établir une connexion non chiffrée |
.addFlags( msgIDs : Collection ; keywords : Object ) : Object .addFlags( msgIDs : Text ; keywords : Object ) : Object .addFlags( msgIDs : Longint ; keywords : Object ) : Object ajoute des flags (drapeaux) aux msgIDs pour les keywords spécifiés |
.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object ajoute un objet mailObj à la boîte destinationBox |
.authenticationMode : Text le mode d'authentification utilisé pour ouvrir la session sur le serveur de messagerie |
.checkConnection() : Object vérifie la connexion à l'aide des informations stockées dans l'objet transporteur |
.checkConnectionDelay : Integer la durée maximale (en secondes) autorisée avant vérification de la connexion au serveur |
.connectionTimeOut : Integer le temps d'attente maximal (en secondes) autorisé pour établir une connexion avec le serveur |
.copy( msgsIDs : Collection ; destinationBox : Text ) : Object .copy( allMsgs : Integer ; destinationBox : Text ) : Object copie les messages définis par msgsIDs ou allMsgs dans la destinationBox sur le serveur IMAP |
.createBox( name : Text ) : Object crée une mailbox avec le name passé en paramètre |
.delete( msgsIDs : Collection ) : Object .delete( allMsgs : Integer ) : Object associe le marqueur "deleted" aux messages désignés par msgsIDs ou allMsgs |
.deleteBox( name : Text ) : Object supprime définitivement la boîte de réception nommée name sur le serveur IMAP |
.expunge() : Object supprime tous les messages marqués "deleted" du serveur de messagerie IMAP. |
.getBoxInfo( { name : Text }) : Object renvoie un objet boxInfo correspondant à la maibox courante ou à la mailbox nommée name |
.getBoxList( { parameters : Object } ) : Collection renvoie une collection de boîtes aux lettres décrivant toutes les boîtes aux lettres disponibles |
.getDelimiter() : Text renvoie le caractère utilisé pour délimiter les niveaux de hiérarchie dans le nom de la boîte aux lettres |
.getMail( msgNumber: Integer { ; options : Object } ) : Object .getMail( msgID: Text { ; options : Object } ) : Object renvoie l'objet Email correspondant au msgNumber ou msgID dans la boîte aux lettres désignée par IMAP_transporter |
.getMails( ids : Collection { ; options : Object } ) : Object .getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object renvoie un objet contenant une collection d'objets Email |
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob .getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob copie les messages définis par msgsIDs ou allMsgs dans la destinationBox sur le serveur IMAP |
.host : Text le nom ou l'adresse IP du serveur hôte |
.logFile : Text le chemin complet du fichier d'historique qui a été défini (le cas échéant) pour la connexion |
.move( msgsIDs : Collection ; destinationBox : Text ) : Object .move( allMsgs : Integer ; destinationBox : Text ) : Object déplace les messages définis par msgsIDs ou allMsgs vers la destinationBox sur le serveur IMAP |
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection convertit les numéros de séquence en identifiants uniques IMAP pour les messages de la plage séquentielle désignée par startMsg et endMsg |
.removeFlags( msgIDs : Collection ; keywords : Object ) : Object .removeFlags( msgIDs : Text ; keywords : Object ) : Object .removeFlags( msgIDs : Longint ; keywords : Object ) : Object supprime les flags des msgIDs pour les keywords spécifiés |
.renameBox( currentName : Text ; newName : Text ) : Object change le nom d'une boîte aux lettres sur le serveur IMAP |
.port : Integer le numéro de port utilisé pour les transactions d'emails |
.searchMails( searchCriteria : Text ) : Collection recherche les messages qui correspondent aux critères de recherche searchCriteria dans la boîte de réception courante |
.selectBox( name : Text { ; state : Integer } ) : Object sélectionne la mailbox name comme boîte aux lettres courante |
.subscribe( name : Text ) : Object permet d'ajouter la boîte aux lettres spécifiée à l'ensemble des mailboxes auxquelles vous avez "souscrit" sur le serveur IMAP |
.unsubscribe( name : Text ) : Object supprime la mailbox spécifiée de l'ensemble des mailboxes auxquelles vous avez "souscrit" |
.user : Text le nom d'utilisateur employé pour l'authentification sur le serveur de messagerie |
IMAP New transporter
Historique
Release | Modifications |
---|---|
18 R4 | Ajout |
IMAP New transporter( server : Object ) : 4D.IMAPTransporter
Paramètres | Type | Description | |
---|---|---|---|
server | Object | -> | Informations sur le serveur IMAP |
Résultat | 4D.IMAPTransporter | <- | objet IMAP transporter |
|
Description
La commande IMAP New transporter
configure une nouvelle connexion IMAP selon le paramètre server et renvoie un nouvel objet transporter. L'objet transporteur retourné sera alors utilisé pour la réception d'emails.
Dans le paramètre server, passez un objet contenant les propriétés suivantes :
server | Valeur par défaut (si omise) |
---|---|
.acceptUnsecureConnection : Boolean True si 4D est autorisé à établir une connexion non chiffrée | False |
.accessTokenOAuth2 : Text .accessTokenOAuth2 : Object Chaîne ou objet token représentant les informations d'autorisation OAuth2. Utilisé uniquement avec OAUTH2 authenticationMode . Si accessTokenOAuth2 est utilisé mais que authenticationMode est omis, le protocole OAuth 2 est utilisé (si le serveur l'autorise). Non retourné en objet IMAP transporter. | aucun |
.authenticationMode : Text le mode d'authentification utilisé pour ouvrir la session sur le serveur de messagerie | le mode d'authentification le plus sûr pris en charge par le serveur est utilisé |
.checkConnectionDelay : Integer la durée maximale (en secondes) autorisée avant vérification de la connexion au serveur | 300 |
.connectionTimeOut : Integer le temps d'attente maximal (en secondes) autorisé pour établir une connexion avec le serveur | 30 |
.host : Text le nom ou l'adresse IP du serveur hôte | obligatoire |
.logFile : Text le chemin complet du fichier d'historique qui a été défini (le cas échéant) pour la connexion | aucun |
.password : Text Mot de passe utilisateur pour l'authentification sur le serveur. Non retourné en objet IMAP transporter. | aucun |
.port : Integer le numéro de port utilisé pour les transactions d'emails | 993 |
.user : Text le nom d'utilisateur employé pour l'authentification sur le serveur de messagerie | aucun |
Attention : Assurez-vous que le timeout défini est inférieur au timeout du serveur, sinon le timeout du client sera inutile.
Résultat
La fonction retourne un objet IMAP transporter. Toutes les propriétés retournées sont en lecture seule.
La connexion IMAP est automatiquement fermée lorsque l'objet transporteur est détruit.
Exemple
$server:=New object
$server.host:="imap.gmail.com" //Obligatoire
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"
$server.logFile:="LogTest.txt" //log à sauvegarder dans le dossier Logs
var $transporter : 4D.IMAPTransporter
$transporter:=IMAP New transporter($server)
$status:=$transporter.checkConnection()
If(Not($status.success))
ALERT("An error occurred: "+$status.statusText)
End if
4D.IMAPTransporter.new()
4D.IMAPTransporter.new( server : Object ) : 4D.IMAPTransporter
Paramètres | Type | Description | |
---|---|---|---|
server | Object | -> | Informations sur le serveur IMAP |
Résultat | 4D.IMAPTransporter | <- | objet IMAP transporter |
|
Description
La fonction 4D.IMAPTransporter.new()
crée et renvoie un nouvel objet du type 4D.IMAPTransporter
. Elle est identique à la commande IMAP New transporter
(raccourci).
.acceptUnsecureConnection
Historique
Release | Modifications |
---|---|
17 R4 | Ajout |
.acceptUnsecureConnection : Boolean
Description
La propriété .acceptUnsecureConnection
contient True si 4D est autorisé à établir une connexion non chiffrée lorsqu'une connexion chiffrée n'est pas possible.
Elle contient False si les connexions non chiffrées ne sont pas autorisées, auquel cas une erreur est retournée lorsque la connexion chiffrée n'est pas possible.
Ports sécurisés disponibles :
-
SMTP
- 465: SMTPS
- 587 ou 25 : SMTP avec mise à niveau STARTTLS si le serveur le prend en charge.
-
IMAP
- 143 : Port IMAP non chiffré
- 993 : IMAP avec mise à niveau STARTTLS si le serveur le prend en charge
-
POP3
- 110 : Port POP3 non chiffré
- 995 : POP3 avec mise à niveau STARTTLS si le serveur le prend en charge.
.addFlags()
Historique
Release | Modifications |
---|---|
20 | Prise en charge des mots-clés personnalisés (custom keywords) |
18 R6 | Ajout |
.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object
Paramètres | Type | Description | |
---|---|---|---|
msgIDs | Collection | -> | Collection de chaînes : IDs uniques des messages (texte) Texte : ID unique d'un message Numérique (IMAP all) : Tous les messages de la boîte sélectionnée |
keywords | Object | -> | Mots-clés de flags à ajouter |
Résultat | Object | <- | Statut de l'opération addFlags |
|
Description
La fonction .addFlags()
ajoute des flags (drapeaux) aux msgIDs
pour les keywords
spécifiés.
Dans le paramètre msgIDs
, vous pouvez passer soit :
- une collection contenant les IDs uniques de messages spécifiques, ou
- l'ID unique (texte) d'un seul message ou
- la constante suivante (entier long) pour tous les messages de la boîte sélectionnée :
Constante | Valeur | Commentaire |
---|---|---|
IMAP all | 1 | Sélectionner tous les messages de la boîte sélectionnée |
Le paramètre keywords
permet de définir les flags à ajouter aux msgIDs
. Vous pouvez utiliser les flags standard suivants ainsi que des flags personnalisés (la prise en charge des flags personnalisés dépend de l'implémentation du serveur) :
Propriété | Type | Description |
---|---|---|
$draft | Boolean | True pour ajouter le marqueur "draft" au message |
$seen | Boolean | True pour ajouter le marqueur "seen" au message |
$flagged | Boolean | True pour ajouter le marqueur "flagged" au message |
$answered | Boolean | True pour ajouter le marqueur "answered" au message |
$deleted | Boolean | True pour ajouter le marqueur "deleted" au message |
<custom flag> | Boolean | True pour ajouter le flag personnalisé au message |
Les noms des flags personnalisés doivent respecter cette règle : le mot-clé doit être une chaîne non sensible à la casse, excluant les caractères de contrôle et les espaces, et ne peut inclure aucun de ces caractères : ( ) { ] % * " \
- Pour qu'un mot-clé soit pris en compte, il doit être à vrai.
- L'interprétation des indicateurs de mots-clés peut varier selon le client de messagerie.
Objet retourné
La fonction retourne un objet décrivant le statut IMAP :
Propriété | Type | Description | |
---|---|---|---|
success | Boolean | Vrai si l'opération est réussie, sinon Faux | |
statusText | Text | Message du statut retourné par le serveur IMAP, ou dernière erreur retournée dans la pile d'erreurs 4D | |
errors | Collection | Pile d'erreurs 4D (non retournée si une réponse du serveur IMAP est reçue) | |
[].errcode | Number | Code d'erreur 4D | |
[].message | Text | Description de l'erreur 4D | |
[].componentSignature | Text | Signature du composant interne qui a retourné l'erreur |
Exemple
var $options;$transporter;$boxInfo;$status : Object
$options:=New object
$options.host:="imap.gmail.com"
$options.port:=993
$options.user:="4d@gmail.com"
$options.password:="xxxxx"
// Créer transporteur
$transporter:=IMAP New transporter($options)
// Sélectionner la boîte de messagerie
$boxInfo:=$transporter.selectBox("INBOX")
// Marquer tous les messages de la boite de réception (INBOX) comme étant lus/vus
$flags:=New object
$flags["$seen"]:=True
$status:=$transporter.addFlags(IMAP all;$flags)
.append()
Historique
Release | Modifications |
---|---|
18 R6 | Ajout |
.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object
Paramètres | Type | Description | |
---|---|---|---|
mailObj | Object | -> | Objet email |
destinationBox | Text | -> | Mailbox devant recevoir l'objet email |
options | Object | -> | Objet contenant les informations de charset |
Résultat | Object | <- | Statut de l'opération |
|
Description
La fonction append()
ajoute un objet mailObj
à la boîte destinationBox
.
Dans le paramètre mailObj
, passez un objet email. Pour une description détaillée des propriétés de mail, reportez-vous à Objet Email. La fonction .append()
prend en charge les marqueurs de mots-clés dans l'attribut keywords
des objets email.
Le paramètre optionnel destinationBox
vous permet de passer le nom de la boîte de réception dans laquelle l'objet mailObj
sera ajouté. S'il est omis, la mailbox courante sera utilisée.
Dans le paramètre optionnel options
, vous pouvez passer un objet permettant de définir le charset et l'encodage des différentes parties de l'email. Propriétés disponibles :
Propriété | Type | Description |
---|---|---|
headerCharset | Text | Charset et encodage utilisés pour les parties de mail suivantes : le sujet, les noms de fichiers joints et le nom du mail. Valeurs possibles : voir le tableau des charsets possibles |
bodyCharset | Text | Charset et encodage utilisés pour le contenu html et le texte du body du mail. Valeurs possibles : voir le tableau des charsets possibles |
Charsets possibles :
Constante | Valeur | Commentaire |
---|---|---|
mail mode ISO2022JP | US-ASCII_ISO-2022-JP_UTF8_QP |
|
mail mode ISO88591 | ISO-8859-1 |
|
mail mode UTF8 | US-ASCII_UTF8_QP | headerCharset & bodyCharset : US-ASCII si possible, sinon UTF-8 & Quoted-printable (valeur par défaut) |
mail mode UTF8 in base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset : US-ASCII si possible, sinon UTF-8 & base64 |
Objet retourné
La fonction retourne un objet décrivant le statut IMAP :
Propriété | Type | Description | |
---|---|---|---|
success | Boolean | Vrai si l'opération est réussie, sinon Faux | |
statusText | Text | Message du statut retourné par le serveur IMAP, ou dernière erreur retournée dans la pile d'erreurs 4D | |
errors | Collection | Pile d'erreurs 4D (non retournée si une réponse du serveur IMAP est reçue) | |
[].errcode | Number | Code d'erreur 4D | |
[].message | Text | Description de l'erreur 4D | |
[].componentSignature | Text | Signature du composant interne qui a retourné l'erreur |
Exemple
Pour enregistrer un email dans la boîte Drafts :
var $settings; $status; $msg; $imap: Object
$settings:=New object("host"; "domain.com"; "user"; "xxxx"; "password"; "xxxx"; "port"; 993)
$imap:=IMAP New transporter($settings)
$msg:=New object
$msg.from:="xxxx@domain.com"
$msg.subject:="Lorem Ipsum"
$msg.textBody:="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
$msg.keywords:=New object
$msg.keywords["$seen"]:=True//marquer le message comme étant lu
$msg.keywords["$draft"]:=True//marquer le message comme brouillon
$status:=$imap.append($msg; "Drafts")
.authenticationMode
Historique
Release | Modifications |
---|---|
17 R4 | Ajout |
.authenticationMode : Text
Description
La propriété .authenticationMode
contient le mode d'authentification utilisé pour ouvrir la session sur le serveur de messagerie.
Par défaut, le mode le plus sécurisé pris en charge par le serveur est utilisé.
Valeurs possibles :
Valeur | Constantes | Commentaire |
---|---|---|
CRAM-MD5 | IMAP authentication CRAM MD5 | Authentification à l'aide du protocole CRAM-MD5 |
LOGIN | IMAP authentication login | Authentification à l'aide du protocole LOGIN |
OAUTH2 | IMAP authentication OAUTH2 | Authentification à l'aide du protocole OAuth2 |
PLAIN | IMAP authentication plain | Authentification à l'aide du protocole PLAIN |
.checkConnection()
Historique
Release | Modifications |
---|---|
17 R4 | Ajout |
.checkConnection() : Object
Paramètres | Type | Description | |
---|---|---|---|
Résultat | Object | <- | Statut de la connexion de l'objet transporteur |
|
Description
La fonction .checkConnection()
vérifie la connexion à l'aide des informations stockées dans l'objet transporteurrecrée la connexion si nécessaire, et renvoie son statut. Cette fonction vous permet de vérifier que les valeurs fournies par l'utilisateur sont valides et cohérentes.