Aller au contenu principal
Version: v20 R4 BETA

POP3Transporter

La classe POP3Transporter vous permet de récupérer des messages à partir d'un serveur de messagerie POP3.

Objet POP3 Transporter

Les objets Transporter POP3 sont instanciés avec la commande POP3 New transporter. Leurs propriétés et fonctions sont les suivantes :

.acceptUnsecureConnection : Boolean    True si 4D est autorisé à établir une connexion non chiffrée
.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
.connectionTimeOut : Integer    le temps d'attente maximal (en secondes) autorisé pour établir une connexion avec le serveur
.delete( msgNumber : Integer )    marque l'email msgNumber pour suppression du serveur POP3
.getBoxInfo() : Object    renvoie un objet boxInfo correspondant à la boîte aux lettres désignée par le POP3 transporter
.getMail( msgNumber : Integer { ; headerOnly : Boolean } ) : Object    renvoie l'objet Email correspondant au msgNumber dans la boîte aux lettres désignée par le POP3 transporter
.getMailInfo( msgNumber : Integer ) : Object    retourne un objet mailInfo correspondant au msgNumber de la boite de réception désignée par le POP3 transporter
.getMailInfoList() : Collection    retourne une collection d'objets mailInfo décrivant les messages de la boîte de réception désignée par le POP3 transporter
.getMIMEAsBlob( msgNumber : Integer ) : Blob    renvoie un BLOB avec le contenu MIME du message correspondant au msgNumber dans la boîte de réception désignée par le POP3_transporter
.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
.port : Integer     le numéro de port utilisé pour les transactions d'emails
.undeleteAll()    supprime tous les marqueurs de suppression définis pour les emails de POP3_transporter
.user : Text     le nom d'utilisateur employé pour l'authentification sur le serveur de messagerie

POP3 New transporter

Historique
VersionModifications
v18 R2Ajout

POP3 New transporter( server : Object ) : 4D.POP3Transporter

ParamètresTypeDescription
serverobject->Informations sur le serveur IMAP
Résultat4D.POP3Transporter<-objet POP3 transporter

|

Description

La commande POP3 New transporter configure une nouvelle connexion POP3selon le paramètre server et renvoie un nouvel objet POP3 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 :

serverValeur par défaut (si omise)
.acceptUnsecureConnection : Boolean    True si 4D est autorisé à établir une connexion non chiffréeFalse
.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é dans l'objet SMTP transporter.
aucun
.authenticationMode : Text    le mode d'authentification utilisé pour ouvrir la session sur le serveur de messageriele mode d'authentification le plus sûr pris en charge par le serveur est utilisé
.connectionTimeOut : Integer    le temps d'attente maximal (en secondes) autorisé pour établir une connexion avec le serveur30
.host : Text    le nom ou l'adresse IP du serveur hôteobligatoire
.logFile : Text    le chemin complet du fichier d'historique qui a été défini (le cas échéant) pour la connexionaucun
password : Text
Mot de passe utilisateur pour l'authentification sur le serveur. Non retourné dans l'objet SMTP transporter.
aucun
.port : Integer     le numéro de port utilisé pour les transactions d'emails995
.user : Text     le nom d'utilisateur employé pour l'authentification sur le serveur de messagerieaucun

Résultat

La fonction retourne un objet POP3 transporter. Toutes les propriétés retournées sont en lecture seule.

La connexion POP3 est automatiquement fermée lorsque l'objet transporteur est détruit.

Exemple

 var $server : Object
$server:=New object
$server.host:="pop.gmail.com" //Obligatoire
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"
$server.logFile:="LogTest.txt" //log à enregistrer dans le dossier Logs

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

$status:=$transporter.checkConnection()
If(Not($status.success))
ALERT("An error occurred receiving the mail: "+$status.statusText)
End if

4D.POP3Transporter.new()

4D.POP3Transporter.new( server : Object ) : 4D.POP3Transporter

ParamètresTypeDescription
serverObject->Informations sur le serveur IMAP
Résultat4D.POP3Transporter<-objet POP3 transporter

|

Description

La fonction 4D.POP3Transporter.new() crée et renvoie un nouvel objet du type 4D.POP3Transporter. .

.acceptUnsecureConnection

Historique
VersionModifications
v17 R4Ajout

.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.

.authenticationMode

Historique
VersionModifications
v17 R4Ajout

.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 :

ValeurConstantesCommentaire
APOPPOP3 authentication APOPAuthentification à l'aide du protocole APOP (POP3 uniquement)
CRAM-MD5POP3 authentication CRAM MD5Authentification à l'aide du protocole CRAM-MD5
LOGINPOP3 authentication loginAuthentification à l'aide du protocole LOGIN
OAUTH2POP3 authentication OAUTH2Authentification à l'aide du protocole OAuth2
PLAINPOP3 authentication plainAuthentification à l'aide du protocole PLAIN

.checkConnection()

Historique
VersionModifications
v17 R4Ajout

.checkConnection() : Object

ParamètresTypeDescription
RésultatObject<-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.

Objet retourné

La fonction envoie une requête au serveur de mail et retourne un objet décrivant le statut. Cet objet peut avoir les propriétés suivantes :

PropriétéTypeDescription
successbooleanVrai si la vérification a été effectuée avec succès, sinon Faux
statusnumber(SMTP uniquement) Code du statut retourné par le serveur de messagerie (0 en cas de problème non lié au traitement du mail)
statusTexttextMessage du statut retourné par le serveur de messagerie, ou dernière erreur retournée dans la pile d'erreurs 4D
errorscollectionPile d'erreurs 4D (non retournée si une réponse du serveur de messagerie est reçue)
[ ].errCodenumberCode d'erreur 4D
[ ].messagetextDescription de l'erreur 4D
[ ].componentSignaturetextSignature du composant interne qui a retourné l'erreur

Exemple

 var $pw :  Text
var $options : Object
$options:=New object

$pw:=Request("Please enter your password:")
if(OK=1)
$options.host:="pop3.gmail.com"

$options.user:="test@gmail.com"
$options.password:=$pw

$transporter:=POP3 New transporter($options)

$status:=$transporter.checkConnection()
If($status.success)
ALERT("POP3 connection check successful!")
Else
ALERT("Error: "+$status.statusText)
End if
End if

.connectionTimeOut

Historique
VersionModifications
v17 R5Ajout

.connectionTimeOut : Integer

Description

La propriété .connectionTimeOut contient le temps d'attente maximal (en secondes) autorisé pour établir une connexion avec le serveur. Par défaut, si la propriété n'a pas été définie dans l'objet server (utilisé pour créer l'objet transporteur avec SMTP New transporter, POP3 New transporter, IMAP New transporter), la valeur utilisée est 30.

.delete()

Historique
VersionModifications
v18 R2Ajout

.delete( msgNumber : Integer )

ParamètresTypeDescription
msgNumberInteger->Numéro du message à supprimer

|

Description

La fonction delete() marque l'email msgNumber pour suppression du serveur POP3.

Dans le paramètre msgNumber, passez le numéro de l'email à supprimer. Ce numéro est retourné dans la propriété number par la fonction .getMailInfoList().

L'exécution de cette méthode ne supprime pas réellement l'email. L'email marqué sera supprimé sur le serveur POP3 uniquement lorsque l'objet POP3_transporter (créé à l'aide de POP3 New transporter) sera détruit. Le marqueur pourra également être retiré via la fonction .undeleteAll().

Si la session courante se termine inopinément et que le connexion est fermée (ex : timeout, panne de réseau, etc.), un message d'erreur est généré et les messages marqués pour suppression demeureront sur le serveur POP3.

Exemple
 $mailInfoList:=$POP3_transporter.getMailInfoList()
For each($mailInfo;$mailInfoList)
// Marquer votre e-mail comme "à supprimer à la fin de la session"
$POP3_transporter.delete($mailInfo.number)
End for each
// Forcer la fermeture de la session pour supprimer les e-mails marqués pour suppression
CONFIRM("Selected messages will be deleted.";"Delete";"Undo")
If(OK=1) //suppression confirmée
$POP3_transporter:=Null
Else
$POP3_transporter.undeleteAll() //supprimer les marqueurs de suppression
End if

.getBoxInfo()

Historique
VersionModifications
v18 R2Ajout

.getBoxInfo() : Object

ParamètresTypeDescription
RésultatObject<-Objet boxInfo

|

Description

La fonction .getBoxInfo() renvoie un objet boxInfo correspondant à la boîte aux lettres désignée par le POP3 transporter. Cette fonction vous permet de récupérer des informations sur la boite de réception.

L'objet boxInfo contient les propriété suivantes :

PropriétéTypeDescription
mailCountNumberNombre de messages contenus dans la boîte de réception
sizeNumberTaille du message en octets
Exemple
 var $server; $boxinfo : Object

$server:=New object
$server.host:="pop.gmail.com" //Obligatoire
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

//mailbox info
$boxInfo:=$transporter.getBoxInfo()
ALERT("The mailbox contains "+String($boxInfo.mailCount)+" messages.")

.getMail()

Historique
VersionModifications
v20Prise en charge du paramètre headerOnly
v18 R2Ajout

.getMail( msgNumber : Integer { ; headerOnly : Boolean } ) : Object

ParamètresTypeDescription
msgNumberInteger->Numéro du message dans la liste
headerOnlyBoolean->True pour télécharger uniquement les en-têtes de l'email (par défaut, False)
RésultatObject<-Objet email

|

Description

La fonction .getMail() renvoie l'objet Email correspondant au msgNumber dans la boîte aux lettres désignée par le POP3 transporter. Cette fonction vous permet de gérer localement le contenu de l'email.

Passez dans msgNumber le numéro du message à récupérer. Ce numéro est renvoyé dans la propriété number par la fonction .getMailInfoList().

Optionnellement, vous pouvez passer true dans le paramètre headerOnly pour exclure les parties body de l'objet Email renvoyé. Seules les propriétés d'en-têtes (header, to, from...) sont alors retournées. Cette option vous permet d'optimiser l'étape de téléchargement lorsque beaucoup d'emails sont sur le serveur.

note

L'option headerOnly peut ne pas être prise en charge par le serveur.

La fonction retourne Null si :

  • msgNumber désigne un message inexistant,
  • le message a été marqué pour être supprimé via .delete().

Objet retourné

.getMail() retourne un objet Email.

Exemple

Vous souhaitez connaitre l'expéditeur du premier mail de la boite de réception :

 var $server; $transporter : Object
var $mailInfo : Collection
var $sender : Variant

$server:=New object
$server.host:="pop.gmail.com" //obligatoire
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

$mailInfo:=$transporter.getMailInfoList()

$sender:=$transporter.getMail($mailInfo[0].number).from

.getMailInfo()

Historique
VersionModifications
v18 R2Ajout

.getMailInfo( msgNumber : Integer ) : Object

ParamètresTypeDescription
msgNumberInteger->Numéro du message dans la liste
RésultatObject<-Objet MailInfo

|

Description

La fonction .getMailInfo() retourne un objet mailInfo correspondant au msgNumber de la boite de réception désignée par le POP3 transporter. Cette fonction vous permet de récupérer des informations sur l'email.

Dans le paramètre msgNumber, passez le numéro de l'email à récupérer. Ce numéro est retourné dans la propriété number par la fonction .getMailInfoList().

L'objet mailInfo retourné contient les propriété suivantes :

PropriétéTypeDescription
sizeNumberTaille du message en octets
idTextID unique du message

La fonction retourne Null si :

  • msgNumber désigne un message inexistant,
  • le message a été marqué pour suppression à l'aide de .delete().
Exemple
 var $server; $mailInfo : Object
var $mailNumber : Integer

$server.host:="pop.gmail.com" //Mandatory
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

//message info
$mailInfo:=$transporter.getMailInfo(1) //get the first mail
If($mailInfo #Null)
ALERT("First mail size is:"+String($mailInfo.size)+" bytes.")
End if

.getMailInfoList()

Historique
VersionModifications
v18 R2Ajout

.getMailInfoList() : Collection

ParamètresTypeDescription
RésultatCollection<-Collection d'objets mailInfo

|

Description

La fonction .getMailInfoList() retourne une collection d'objets mailInfo décrivant les messages de la boîte de réception désignée par le POP3 transporter. Cette fonction vous permet de gérer localement les listes de messages situés sur le serveur de messagerie POP3.

Chaque objet mailInfo retourné contient les propriété suivantes :

PropriétéTypeDescription
[ ].sizeNumberTaille du message en octets
[ ].numberNumberNuméro du message
[ ].idTextID unique du message (utile si vous stockez le message localement)

Si la boîte de réception ne contient pas de message, une collection vide est retournée.

Propriétés number et ID

number est le numéro d'un message de la boite de réception au moment de la création du POP3_transporter. La propriété number n'est pas une valeur statique liée à un message spécifique. Elle change d'une session à l'autre en fonction de sa relation à d'autres messages de la boîte de réception au moment de l'ouverture de la session. Les numéros assignés aux messages sont valides uniquement pendant la durée de vie du POP3_transporter. Lorsque le POP3_transporter est supprimé, les messages marqués pour suppression seront supprimés. Lorsque l'utilisateur se reconnecte au serveur, les messages courants de la boîte de réception sont renumérotés de 1 à x.

A l'inverse, id est un numéro unique assigné à un message lorsqu'il a été reçu par le serveur. Ce numéro est calculé à l'aide de l'heure et de la date de réception du message et sa valeur est assignée par votre serveur POP3. Malheureusement, les serveurs POP3 n'utilisent pas l'id comme référence primaire à leurs messages. Durant les sessions POP3, vous aurez besoin d'indiquer le number comme référence aux messages du serveur. Les développeurs doivent être vigilants s'ils développent des solutions qui importent des références aux messages dans une base de données tout en laissant le corps du message sur le serveur.

Exemple

Vous souhaitez connaitre le nombre total d'emails de la boîte de réception ainsi que leur taille :

 var $server : Object
$server:=New object
$server.host:="pop.gmail.com" //Obligatoire
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

C_COLLECTION($mailInfo)
C_LONGINT($vNum;$vSize)

$mailInfo:=$transporter.getMailInfoList()
$vNum:=$mailInfo.length
$vSize:=$mailInfo.sum("size")

ALERT("The mailbox contains "+String($vNum)+" message(s) for "+String($vSize)+" bytes.")

.getMIMEAsBlob()

Historique
VersionModifications
v18 R3Ajout

.getMIMEAsBlob( msgNumber : Integer ) : Blob

ParamètresTypeDescription
msgNumberInteger->Numéro du message dans la liste
RésultatBlob<-Blob de la chaine MIME retournée par le serveur mail

|

Description

La fonction .getMIMEAsBlob() renvoie un BLOB avec le contenu MIME du message correspondant au msgNumber dans la boîte de réception désignée par le POP3_transporter.

Dans le paramètre msgNumber, passez le numéro de l'email à récupérer. Ce numéro est retourné dans la propriété number par la fonction .getMailInfoList().

La fonction retourne un Blob vide si :

  • msgNumber désigne un message inexistant,
  • le message a été marqué pour suppression à l'aide de .delete().

BLOB retourné

.getMIMEAsBlob() retourne un BLOB qui peut être archivé dans une base de données ou converti en un objet Email avec la commande MAIL Convert from MIME.

Exemple

Vous souhaitez connaitre le nombre total d'emails de la boîte de réception ainsi que leur taille :

 var $server : Object
var $mailInfo : Collection
var $blob : Blob
var $transporter : 4D.POP3Transporter

$server:=New object
$server.host:="pop.gmail.com"
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

$mailInfo:=$transporter.getMailInfoList()
$blob:=$transporter.getMIMEAsBlob($mailInfo[0].number)

.host

Historique
VersionModifications
v17 R5Ajout

.host : Text

Description

La propriété .host contient le nom ou l'adresse IP du serveur hôte. Utilisée pour les échanges de courrier (SMTP, POP3, IMAP).

.logFile

Historique
VersionModifications
v17 R5Ajout

.logFile : Text

Description

La propriété .logFile contient le chemin complet du fichier d'historique qui a été défini (le cas échéant) pour la connexion. Le chemin peut être relatif (au dossier Logs courant) ou absolu.

Contrairement aux fichiers log habituels (activés via la commande SET DATABASE PARAMETER), les fichiers log étendus stockent le contenu MIME de tous les emails envoyés et n'ont pas de limite de taille. Pour plus d'informations sur les fichiers log étendus, reportez-vous à :

.port

Historique
VersionModifications
v17 R4Ajout

.port : Integer

Description

La propriété .port contient le numéro de port utilisé pour les transactions d'emails. Par défaut, si la propriété port n'a pas été définie dans l'objet server (utilisé pour créer l'objet transporteur avec SMTP New transporter, POP3 New transporter, IMAP New transporter), le port utilisé est :

  • SMTP - 587
  • POP3 - 995
  • IMAP - 993

.undeleteAll()

Historique
VersionModifications
v18 R2Ajout

.undeleteAll()

ParamètresTypeDescription
Ne requiert aucun paramètre

|

Description

La fonction .undeleteAll() supprime tous les marqueurs de suppression définis pour les emails de POP3_transporter.

.user

Historique
VersionModifications
v17 R4Ajout

.user : Text

Description

La propriété .user contient le nom d'utilisateur employé pour l'authentification sur le serveur de messagerie.