Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v18.4
SMTP_transporteur.send( )
|
SMTP_transporteur.send ( mail ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
Objet |
![]() |
E-mail à envoyer | ||||||
Résultat | Objet |
![]() |
Statut SMTP | |||||
La méthode SMTP_transporteur.send( ) envoie l'objet mail au serveur SMTP défini dans l'objet transporteur et retourne un objet statut.
Note : L'objet transporteur doit être déjà créé à l'aide de la commande SMTP Creer transporteur.
La méthode établit la connexion SMTP si cette dernière n'est pas déjà active. Si la propriété keepAlive de l'objet transporteur est définie sur faux, la connexion SMTP est automatiquement fermée après l'exécution de la commande SMTP_transporteur.send( ). Sinon, elle reste active jusqu'à la suppression de l'objet transporteur. Pour plus d'informations, veuillez consulter la description de la commande SMTP Creer transporteur.
Dans mail, passez un objet mail valide à envoyer. Les propriétés d'origine (la provenance de l'e-mail) et de destination (un ou plusieurs destinataires) de l'e-mail doivent être incluses, les autres propriétés sont optionnelles. Les propriétés prises en charge sont :
Propriété | Type | Description | |
from | Texte | Objet | Collection(*) | Adresse(s) d'origine (**) | |
cc | Texte | Objet | Collection(*) | Copie Carbone (CC). Destinataire(s) supplémentaire(s) de l'e-mail | |
bcc | Texte | Objet | Collection(*) | Copie Carbone invisible (CCi). Destinataire(s) caché(s) de l'e-mail | |
to | Texte | Objet | Collection(*) | Destinataire(s) principal(aux) | |
sender | Texte | Objet | Collection(*) | Adresse(s) e-mail source (**) | |
replyTo | Texte | Objet | Collection(*) | Adresse(s) des destinataires en cas de réponse à l'e-mail | |
subject | Texte | Description du sujet | |
textBody | Texte | Texte brut de l'e-mail (l'encodage par défaut est UTF-8) (***) | |
htmlBody | Texte | Représentation HTML de l'e-mail (l'encodage par défaut est UTF-8) (***) | |
sendAt | Texte | Horodatage de l'e-mail (Date TUC) | |
attachments | Collection d'objets | Collection d'objet(s) attachment, voir MAIL Creer piece jointe | |
messageId | Texte | En-tête d'identification du message ("message-id"). Généralement "desChiffresOuDesLettres@nomdedomaine.com", ex : "abcdef.123456@4d.com". Cet ID unique est particulièrement utilisé sur les forums ou dans les listes de diffusion publique. En général, les serveurs de messagerie ajoutent automatiquement cet en-tête aux messages envoyés. | |
inReplyTo | Texte | Identifiant(s) du ou des messages originaux auquel/auxquels le message courant est un message de réponse (****). | |
references | Collection de textes | Collection de tous les identifiants de messages dans la précédente chaîne de réponse (****). | |
keywords | Objet | En-tête "keywords". Contient un ensemble de mots-clés sous forme d'objet, où chaque nom de propriété est un mot-clé et où chaque valeur est mise à Vrai. Voir RFC#4021. | |
[ ].<keyword> | Booléen | Mot-clé à définir (la valeur doit être mise à Vrai). Ex : $mail.keywords["$flagged"]:=Vrai | |
comments | Texte | En-tête de commentaires supplémentaire. Les commentaires n'apparaissent que dans la zone d'en-tête du message (le corps du message reste inchangé) (****). | |
headers | Collection d'objets | Collection d'objets EmailHeader, dans l'ordre dans lequel ils apparaissent dans le message. 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"). Note : 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. | |
[ ].name | Texte | (obligatoire) Nom du champ en-tête, tel que défini dans RFC#5322. S'il est nul ou indéfini, le champ en-tête n'est pas ajouté à l'en-tête MIME. | |
[ ].value | Texte | Nom du champ en-tête, tel que défini dans RFC#5322 |
Note : Les champs en-tête commençant par "Content-" ne doivent PAS être indiqués dans l'objet mail.
Les propriétés supplémentaires suivantes sont utilisées lorsque l'objet mail est créé à partir d'un document MIME, lorsqu'il est généré par exemple par la commande MAIL Convertir depuis MIME. Dans ce cas, les propriétés bodyStructure et bodyValues doivent être passées ensemble, et il n'est pas recommandé d'utiliser htmlBody et textBody.
bodyStructure | Objet | (facultatif) Structure MIME complète du corps du message (objet EmailBodyPart) | |
partID | Texte | Identifie la partie uniquement dans l' e-mail | |
type | Texte | (obligatoire) Valeur du champ en-tête Content-Type de la partie | |
charset | Texte | Valeur du paramètre charset du champ en-tête Content-Type | |
encoding | Texte | Si isEncodingProblem=vrai, la valeur de Content-Transfer-Encoding est ajoutée (par défaut indéfinie) | |
disposition | Texte | Valeur du champ en-tête Content-Disposition de la partie | |
language | Collection de textes | Liste de balises de langage, telles que définies dans RFC3282, dans le champ en-tête Content-Language de la partie, le cas échéant. | |
location | Texte | URI, tel que défini dans la RFC2557, dans le champ en-tête Content-Location de la partie, le cas échéant. | |
subParts | Collection d'objets | Parties du corps de chaque enfant (collection d'objets EmailBodyPart) | |
headers | Collection d'objets | Liste de tous les champs en-tête dans la partie, afin qu'ils apparaissent dans le message (collection d'objets EmailHeader, vois la propriété header) | |
bodyValues | Objet | (facultatif) Objet EmailBodyValue, contenant un objet pour chaque partID de bodyStructure | |
<partID>.value | Texte | Valeur d'une partie du corps | |
<partID>.isEncodingProblem | Booléen | Vrai 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 |
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>"
}
}
(*) Toutes les propriétés contenant des adresses e-mail (from, cc, bcc, to, sender, replyTo) acceptent une valeur de type texte, objet ou collection.
Propriété | Type | Description |
name | Texte | Nom affiché (peut avoir la valeur "null") |
Texte | Adresse e-mail |
(**) Chaque e-mail envoyé contient les adresses du sender et du from :
(***) Si textBody et htmlBody sont tous les deux complétés, le content-type multipart/alternative MIME est utilisé. Le client de messagerie doit alors reconnaitre la partie multipart/alternative et afficher la partie texte ou la partie html le cas échéant.
Il est recommandé que ces propriétés soient omises si bodyStructure et bodyValues sont utilisés.
(****) Pour prendre connaissance des exigences propres au formatage, veuillez consulter RFC#5322.
Note : Dans 4D, le format de l'objet mail suit la spécification JMAP.
Objet retourné
SMTP_transporteur.send( ) retourne un objet qui décrit le statut SMTP de l'opération. Cet objet peut avoir les propriétés suivantes :
Propriété | Type | Description |
success | Booléen | Vrai si l'envoi est réussi. Sinon, Faux. |
status | Numérique | Code du statut retourné par le serveur SMTP |
statusText | Texte | Message retourné par le serveur SMTP |
Note : Pour plus d'informations sur les codes des statuts SMTP, veuillez consulter cette page.
Gestion des erreurs
En cas de problème non lié au traitement SMTP (par exemple une propriété obligatoire qui est manquante dans mail), 4D génère une erreur que vous pouvez intercepter à l'aide d'une méthode installée via la commande APPELER SUR ERREUR. Utilisez la commande LIRE PILE DERNIERE ERREUR pour obtenir plus d'informations sur l'erreur.
Dans ce cas, l'objet erreur qui en résulte contient les valeurs suivantes :
Ce code permet de créer et d'envoyer un e-mail :
C_OBJET($server)
$server:=Creer objet
$server.host:="mail.smtp.host" // Obligatoire
$server.port:=25 // Optionnel, valeur par défaut : 587
$transporter:=SMTP Creer transporteur($server)
C_COLLECTION($headers) // ajouter des headers (en-têtes) définis par l'utilisateur.
$headers:=Creer collection
$headers.push(Creer objet("name";"X-MAILER";"value";"MySoftware"))
$headers.push(Creer objet("name";"X-4D-VERSION";"value";"17Rx"))
C_OBJET($email)
$email:=Creer objet
$email.subject:="mon premier e-mail"
$email.to:="test.mail@4d.com"
$email.from:="test.noreply@4d.com"
$email.textBody:="Ceci est un test"
$email.attachments:=Creer collection(MAIL Creer piece jointe("schedule.xlsx"))
$email.headers:=$headers
$email.keywords:=Creer objet("technical";Vrai;"advanced";Vrai;"useless";Faux)
$status:=$transporter.send($email)
Si(Non($status.success))
ALERTE("Une erreur est survenue lors de l'envoi de l'e-mail : "+$status.statusText)
Fin de si
MAIL Convertir depuis MIME
MAIL Convertir vers MIME
MAIL Creer piece jointe
SMTP Creer transporteur
SMTP_transporteur.checkConnection( )
Produit : 4D
Thème : Mail
Nom intl. : SMTP_transporter.send( )
Créé : 4D v17 R4
Modifié : 4D v17 R5
4D - Langage ( 4D v18)
4D - Langage ( 4D v18.4)
4D - Langage ( 4D v18.6)