Aller au contenu principal
Version : 20

Email

La création, l'envoi et la réception d'emails dans 4D s'effectuent par l'intermédiaire des objets Email.

Des objets Email sont créés lorsque vous recevez des emails via une fonction de classe transporter :

  • IMAP - fonctions .getMail() and .getMails() pour obtenir des emails à partir d'un serveur IMAP
  • POP3 - fonction .getMail() pour obtenir un email à partir d'un serveur POP3.

Vous pouvez également créer un nouvel objet vide Email et le remplir avec les propriétés de l'objet Email.

Vous envoyez des objets Email à l'aide de la fonction SMTP send().

Les commandes MAIL Convert from MIME et MAIL Convert to MIME peuvent être utilisées pour convertir des objets Email depuis et vers des contenus MIME.

Objet Email​

Les objets Email exposent les propriétés suivantes :

Le format des objets Email de 4D suit la spécification JMAP.

.attachments : Collection    collection d'objet(s) 4D.MailAttachment
.bcc : Text
.bcc : Object
.bcc : Collection
    les adresses des destinataires cachés en Copie Carbone Invisible de l'email
.bodyStructure : Object    objet EmailBodyPart, c'est-à-dire la structure MIME complète du body du message (facultatif)
.bodyValues : Object    objet EmailBodyValue, contenant un objet pour chaque <partID> de bodyStructure (facultatif)
.cc : Text
.cc : Object
.cc : Collection
    les adresse(s) email supplémentaire(s) des destinataires en Copie Carbone (CC) de l'email
.comments : Text    header de commentaires supplémentaires
.from : Text
.from : Object
.from : Collection
    l'adresse ou les adresse(s) d'origine de l'email
.headers : Collection    d'objets EmailHeader, dans l'ordre où ils apparaissent dans le message
.htmlBody : Text    représentation HTML du message électronique (jeu de caractères par défaut : UTF-8) (optionnel, SMTP uniquement)
.id : Text    ID unique du serveur IMAP
.inReplyTo : Text    identifiant(s) du ou des messages originaux auquel/auxquels le message courant est une réponse
.keywords : Object    ensemble de mots-clés sous forme d'objet, où chaque nom de propriété est un mot-clé et chaque valeur est mise à true
.messageId : Text    header d'identification du message ("message-id")
.receivedAt : Text    de l'arrivée de l'email sur le serveur IMAP au format ISO 8601 UTC (ex : 2020-09-13T16:11:53Z)
.references : Collection    collection de tous les numéros d'identification des messages de la chaîne de réponse précédente
.replyTo : Text
.replyTo : Object
.replyTo : Collection
    addresse(s) pour les réponses
.sendAt : Text    horodatage de l'email au format ISO 8601 UTC
.sender : Text
.sender : Object
.sender : Collection
    l'adresse ou les adresses source de l'email
.size : Integer    taille (exprimée en octets) de l'objet Email renvoyé par le serveur IMAP
.subject : Text    description du sujet
.textBody : Text    représentation en texte brut du message électronique (jeu de caractères par défaut : UTF-8) (optionnel, SMTP uniquement)
.to : Text
.to : Object
.to : Collection
    la ou les adresse(s) des destinataires principaux de l'email

Adresses Email​

Toutes les propriétés qui contiennent des adresses email (from, cc, bcc, to, sender, replyTo) acceptent des valeurs de type texte, objet ou collection.

Text​

Object​

Un objet avec deux propriétés :

PropriétéTypeDescription
nameTextNom à afficher (peut être null)
emailTextAdresse email

Collection​

Une collection d'objets adresse.

Traitement du body​

Les propriétés textBody et htmlBody sont utilisées uniquement par la fonction SMTP.send() pour permettre d'envoyer des emails simples. Lorsque les deux propriétés sont remplies, le type MIME content-type multipart/alternative est utilisé. Le client email doit alors reconnaître la partie multipart/alternative et afficher la partie texte ou html nécessaire.

bodyStructure et bodyValues sont utilisées pour SMTP lorsque l'objet Email est construit à partir d'un document MIME, par exemple lorsqu'il est généré par la commande MAIL Convert from MIME. Dans ce cas, les deux propriétés bodyStructure et bodyValues doivent être passées ensemble, et il est déconseillé d'utiliser textBody et htmlBody.

Exemple d'objets bodyStructure et bodyValues​

"bodyStructure": {
"type": "multipart/mixed",
"subParts": [
{
"partId": "p0001",
"type": "text/plain"
},
{
"partId": "p0002",
"type": "text/html"
}
]
},
"bodyValues": {
"p0001": {
"value": "I have the most brilliant plan. Let me tell you all about it."
},
"p0002": {
"value": "<!DOCTYPE html><html><head><title></title><style type=\"text/css\">div{font-size:16px}</style></head><body><div>I have the most brilliant plan. Let me tell you all about it.</div></body></html>"
}
}

.attachments​

.attachments : Collection

Description​

La propriété .attachments contient une collection d'objet(s) 4D.MailAttachment.

Les objets de type pièce jointe sont définis par la commande MAIL New attachment. Les objets de type pièce jointe sont définis par la commande MAIL New attachment.

.bcc​

.bcc : Text
.bcc : Object
.bcc : Collection

Description​

La propriété .bcc contient les adresses des destinataires cachés en Copie Carbone Invisible de l'email.

.bodyStructure​

.bodyStructure : Object

Description​

La propriété .bodyStructure contient l'objet EmailBodyPart, c'est-à-dire la structure MIME complète du body du message (facultatif). Voir section Traitement du body.

L'objet .bodyStructure contient les propriété suivantes :

PropriétéTypeValeur
partIDTextIdentifie la partie de manière unique dans l'email
typeText(obligatoire) Valeur du champ d'en-tête Content-Type de la partie
charsetTextValeur du paramètre charset du champ d'en-tête Content-Type
encodingTextSi isEncodingProblem=true, la valeur de Content-Transfer-Encoding est ajoutée (par défaut indéfini)
dispositionTextValeur du champ d'en-tête Content-Disposition de la partie
languageCollection de textesListe de balises de langage, telles que définies dans la RFC3282, dans le champ d'en-tête Content-Language de la partie, le cas échéant.
locationTextURI, tel que défini dans la RFC2557, dans le champ d'en-tête Content-Location de la partie, le cas échéant.
subPartsCollection d'objetsParties du corps de chaque enfant (collection d'objets EmailBodyPart)
headersCollection d'objetsListe de tous les champs d'en-tête de la partie, dans leur ordre d'apparition de l'email (collection d'objets EmailHeader voir propriété headers)

.bodyValues​

.bodyValues : Object

Description​

La propriété .bodyValues contient l'objet EmailBodyValue, contenant un objet pour chaque <partID> de bodyStructure (facultatif). Voir section Traitement du body.

L'objet .bodyValues contient les propriété suivantes :

PropriétéTypeValeur
partID.valuetextValeur de la partie body
partID.isEncodingProblembooleanVrai si des sections malformées sont identifiées durant le décodage du charset, si le charset est inconnu, ou si le content transfer-encoding est inconnu. Faux par défaut

.cc​

.cc : Text
.cc : Object
.cc : Collection

Description​

La propriété .cc contient les adresse(s) email supplémentaire(s) des destinataires en Copie Carbone (CC) de l'email.

.comments​

.comments : Text

Description​

La propriété .comments contient un header de commentaires supplémentaires.

Les commentaires n'apparaissent que dans la zone d'en-tête du message (le body du message reste inchangé).

Pour les exigences propres au formatage, veuillez consulter la RFC#5322.

.from​

.from : Text
.from : Object
.from : Collection

Description​

La propriété .from contient l'adresse ou les adresse(s) d'origine de l'email.

Chaque email envoyé comporte à la fois les adresses du sender et du from :

  • le domaine sender correspond à ce que le serveur de réception d'email obtient à l'ouverture de la session,
  • l'adresse from correspond à ce que le(s) destinataire(s) visualise(nt).

Pour mieux livrer l'email, il est recommandé d'utiliser les mêmes adresses pour from et sender.

.headers​

.headers : Collection

Description​

La propriété .headers contient une collection d'objets EmailHeader, dans l'ordre où ils apparaissent dans le message. Cette propriété permet aux utilisateurs d'ajouter des en-têtes extended (enregistrés) ou des en-têtes user-defined (non enregistrés, commençant par "X").

Si une propriété d'objet EmailHeader définit un en-tête tel que "from" ou "cc" qui est déjà défini comme propriété au niveau du mail, la propriété EmailHeader est ignorée.

Chaque objet de la collection de headers peut contenir les propriétés suivantes :

PropriétéTypeValeur
[].nametext(obligatoire) Nom du champ en-tête, tel que défini dans la RFC#5322. S'il est null ou indéfini, le champ en-tête n'est pas ajouté à l'en-tête MIME.
[].valuetextValeur du champ d'en-tête telle que définie dans la RFC#5322

.htmlBody​

.htmlBody : Text

Description​

La propriété .htmlBody contient la représentation HTML du message électronique (jeu de caractères par défaut : UTF-8) (optionnel, SMTP uniquement). Voir section Traitement du body.

.id​

.id : Text

Description​

IMAP transporter uniquement.

La propriété .id contient l'ID unique du serveur IMAP.

.inReplyTo​

.inReplyTo : Text

Description​

La propriété .inReplyTo contient le ou les identifiant(s) du ou des messages originaux auquel/auxquels le message courant est une réponse.

Pour les exigences propres au formatage, veuillez consulter la RFC#5322.

.keywords​

.keywords : Object

Description​

La propriété .keywords contient un ensemble de mots-clés sous forme d'objet, où chaque nom de propriété est un mot-clé et chaque valeur est mise à true.

Cette propriété est l'en-tête "keywords" (voir la RFC#4021).

PropriétéTypeValeur
.<keyword>booleanMot-clé à définir à définir (la valeur doit être mise à vrai)

Mots-clés réservés :

  • $draft - Indique qu'un message est un brouillon
  • $seen - Indique qu'un message a été lu
  • $flagged - Indique qu'un message nécessite une attention particulière (ex : Urgent)
  • $answered - Indique qu'un message a reçu une réponse
  • $deleted - Indique un message à supprimer

Exemple​

$mail.keywords["$flagged"]:=True
$mail.keywords["4d"]:=True

.messageId​

.messageId : Text

Description​

La propriété .messageId contient un header d'identification du message ("message-id").

Cet en-tête est généralement "desChiffresOuDesLettres@nomdededomaine", par exemple "abcdef.123456@4d.com". Cet identifiant unique est notamment utilisé sur les forums ou les listes de diffusion publiques. En général, les serveurs de messagerie ajoutent automatiquement cet en-tête aux messages qu'ils envoient.

.receivedAt​

.receivedAt : Text

Description​

IMAP transporter uniquement.

La propriété .receivedAt contient l'horodatage de l'arrivée de l'email sur le serveur IMAP au format ISO 8601 UTC (ex : 2020-09-13T16:11:53Z).

.references​

.references : Collection

Description​

La propriété .references contient la collection de tous les numéros d'identification des messages de la chaîne de réponse précédente.

Pour les exigences propres au formatage, veuillez consulter la RFC#5322.

.replyTo​

.replyTo : Text
.replyTo : Object
.replyTo : Collection

Description​

La propriété .replyTo contient les addresse(s) pour les réponses.

.sendAt​

.sendAt : Text

Description​

La propriété .sendAt contient l'horodatage de l'email au format ISO 8601 UTC.

.sender​

.sender : Text
.sender : Object
.sender : Collection

Description​

La propriété .sender contient l'adresse ou les adresses source de l'email.

Chaque email envoyé comporte à la fois les adresses du sender et du from :

  • le domaine sender correspond à ce que le serveur de réception d'email obtient à l'ouverture de la session,
  • l'adresse from correspond à ce que le(s) destinataire(s) visualise(nt).

Pour mieux livrer l'email, il est recommandé d'utiliser les mêmes adresses pour from et sender.

.size​

.size : Integer

Description​

IMAP transporter uniquement.

La propriété .size contient la taille (exprimée en octets) de l'objet Email renvoyé par le serveur IMAP.

.subject​

.subject : Text

Description​

La propriété .subject contient la description du sujet.

.textBody​

.textBody : Text

Description​

La propriété .textBody contient la représentation en texte brut du message électronique (jeu de caractères par défaut : UTF-8) (optionnel, SMTP uniquement). Voir section Traitement du body.

.to​

.to : Text
.to : Object
.to : Collection

Description​

La propriété .to contient la ou les adresse(s) des destinataires principaux de l'email.

MAIL Convert from MIME​

Historique
ReleaseModifications
18Ajout

MAIL Convert from MIME( mime : Blob ) : Object
MAIL Convert from MIME( mime : Text ) : Object

ParamètresTypeDescription
mimeBlob, Text->Email en MIME
RésultatObject<-Objet email

Description​

La commande MAIL Convert from MIME convertit un document MIME en un objet email valide.

Le format des objets Email de 4D suit la spécification JMAP.

Passez dans mime un document MIME valide à convertir. Il peut être fourni par tout type de serveur ou d'application de messagerie. Il peut être fourni par tout type de serveur ou d'application de messagerie. Si le MIME provient d'un fichier, il est recommandé d'utiliser un paramètre BLOB pour éviter les problèmes liés aux conversions de charset et de retours à la ligne.

Objet retourné​

Objet email.

Exemple 1​

Vous souhaitez charger un template mail enregistré au format MIME dans un document texte et l'envoyer par email :

var $mime: Blob
var $mail;$server;$transporter;$status: Object

$mime:=File("/PACKAGE/Mails/templateMail.txt").getContent())

$mail:=MAIL Convert from MIME($mime)
$mail.to:="smith@mail.com"
$mail.subject:="Hello world"

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="test@gmail.com"
$server.password:="XXXX"

$transporter:=SMTP New transporter($server)
$status:=$transporter.send($mail)

Exemple 2​

Dans cet exemple, vous envoyez directement un document 4D Write Pro contenant des images :

var $mime: Blob
var $email;$server;$transporter;$status: Object

// Export Mime du document 4D Write Pro
WP EXPORT VARIABLE(WParea;$mime;wk mime html)

// convertir la variable Mime de 4D Write Pro en objet email
$email:=MAIL Convert from MIME($mime)

// Remplir les en-têtes de l'objet email
$email.subject:="4D Write Pro HTML body"
$email.from:="YourEmail@gmail.com"
$email.to:="RecipientEmail@mail.com"

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="YourEmail@gmail.com"
$server.password:="XXXX"

$transporter:=SMTP New transporter($server)
$status:=$transporter.send($email)

MAIL Convert to MIME​

Historique
ReleaseModifications
17 R4Ajout
17 R5Modifié

MAIL Convert to MIME( mail : Object { ; options : Object } ) : Text

ParamètresTypeDescription
mailObject->Objet email
optionsObject->Options d'encodage et de charset du mail
RésultatText<-Objet email converti en MIME

Description​

La commande MAIL Convert to MIME convertit un objet email en texte MIME. Cette commande est appelée en interne par SMTP_transporter.send( ) pour formater l'objet email avant de l'envoyer. Elle peut être utilisée pour analyser le format MIME de l'objet.

Dans mail, passez les éléments du contenu et de la structure de l'email à convertir. Cela inclut des informations telles que les adresses e-mail (expéditeur et destinataire(s)), le contenu de l'e-mail lui-même et son type d'affichage.

Le format des objets Email de 4D suit la spécification JMAP.

Dans options, vous pouvez configurer l'encodage et le charset du mail. Les propriétés suivantes sont disponibles :

PropriétéTypeDescription
headerCharsetTextCharset et encodage utilisés pour les parties de mail suivantes : le sujet, les noms de fichiers joints et le nom du mail. Valeurs possibles :
ConstanteValeurCommentaire
Mode courrier ISO2022JPUS-ASCII_ISO-2022-JP_UTF8_QP
  • headerCharset: US-ASCII si possible, japonais (ISO-2022-JP) & Quoted-printable si possible, sinon UTF-8 & Quoted-printable
  • bodyCharset: US-ASCII si possible, japonais (ISO-2022-JP) & 7-bit si possible, sinon UTF-8 & Quoted-printable
mode courrier ISO88591ISO-8859-1
  • headerCharset: ISO-8859-1 & Quoted-printable
  • bodyCharset: ISO-8859-1 & 8-bit
mode courrier UTF8US-ASCII_UTF8_QPheaderCharset & bodyCharset: US-ASCII si possible, sinon UTF-8 & Quoted-printable (valeur par défaut)
mode courrier UTF8 en base64US-ASCII_UTF8_B64headerCharset & bodyCharset: US-ASCII si possible, sinon UTF-8 & base64
bodyCharsetTextCharset et encodage utilisés pour le contenu html et le texte du body du mail. Valeurs possibles : Identiques à celles de headerCharset (voir ci-dessus)

Si le paramètre options est omis, la configuration mail mode UTF8 est utilisée pour les parties en-tête et corps.

Exemple​

var $mail: Object
var $mime: Text
$mail:=New object

// Creation of a mail
$mail.from:="tsales@massmarket.com"
$mail.subject:="Terrific Sale! This week only!"
$mail.textBody:="Text format email"
$mail.htmlBody:="<html><body>HTML format email</body></html>"
$mail.to:=New collection
$mail.to.push(New object ("email";"noreply@4d.com"))
$mail.to.push(New object ("email";"test@4d.com"))

// transform the mail object in MIME
$mime:=MAIL Convert to MIME($mail)

// Contents of $mime:
// MIME-Version: 1.0
// Date: Thu, 11 Oct 2018 15:42:25 GMT
// Message-ID: <7CA5D25B2B5E0047A36F2E8CB30362E2>
// Sender: tsales@massmarket.com
// From: tsales@massmarket.com
// To: noreply@4d.com
// To: test@4d.com
// Content-Type: multipart/alternative; boundary="E0AE5773D5E95245BBBD80DD0687E218"
// Subject: Terrific Sale! This week only!
//
// --E0AE5773D5E95245BBBD80DD0687E218
// Content-Type: text/plain; charset="UTF-8"
// Content-Transfer-Encoding: quoted-printable
//
// Text format email
// --E0AE5773D5E95245BBBD80DD0687E218
// Content-Type: text/html; charset="UTF-8"
// Content-Transfer-Encoding: quoted-printable
//
// <html><body>HTML format email</body></html>
// --E0AE5773D5E95245BBBD80DD0687E218--