Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v18.4
SMTP_transporteur.send( )

SMTP_transporteur.send( ) 


 

SMTP_transporteur.send ( mail ) -> Résultat 
Paramètre Type   Description
mail  Objet in E-mail à envoyer
Résultat  Objet in 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éTypeDescription
fromTexte | Objet | Collection(*)Adresse(s) d'origine (**)
ccTexte | Objet | Collection(*)Copie Carbone (CC). Destinataire(s) supplémentaire(s) de l'e-mail
bccTexte | Objet | Collection(*)Copie Carbone invisible (CCi). Destinataire(s) caché(s) de l'e-mail
toTexte | Objet | Collection(*)Destinataire(s) principal(aux)
senderTexte | Objet | Collection(*)Adresse(s) e-mail source (**)
replyToTexte | Objet | Collection(*)Adresse(s) des destinataires en cas de réponse à l'e-mail
subjectTexte Description du sujet
textBodyTexte Texte brut de l'e-mail (l'encodage par défaut est UTF-8) (***)
htmlBodyTexte Représentation HTML de l'e-mail (l'encodage par défaut est UTF-8) (***)
sendAtTexteHorodatage de l'e-mail (Date TUC)
attachmentsCollection d'objetsCollection d'objet(s) attachment, voir MAIL Creer piece jointe
messageIdTexteEn-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.
inReplyToTexteIdentifiant(s) du ou des messages originaux auquel/auxquels le message courant est un message de réponse (****).
referencesCollection de textesCollection de tous les identifiants de messages dans la précédente chaîne de réponse (****).
keywordsObjetEn-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éenMot-clé à définir (la valeur doit être mise à Vrai). Ex :
 $mail.keywords["$flagged"]:=Vrai
 $mail.keywords["4d"]:=Vrai
commentsTexteEn-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é) (****).
headersCollection d'objetsCollection 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.
[ ].nameTexte(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.
[ ].valueTexteNom 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.

bodyStructureObjet(facultatif) Structure MIME complète du corps du message (objet EmailBodyPart)
partIDTexteIdentifie la partie uniquement dans l' e-mail
typeTexte(obligatoire) Valeur du champ en-tête Content-Type de la partie
charsetTexteValeur du paramètre charset du champ en-tête Content-Type
encodingTexteSi isEncodingProblem=vrai, la valeur de Content-Transfer-Encoding est ajoutée (par défaut indéfinie)
dispositionTexteValeur du champ en-tête Content-Disposition de la partie
languageCollection de textesListe 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.
locationTexteURI, tel que défini dans la RFC2557, dans le champ 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 en-tête dans la partie, afin qu'ils apparaissent dans le message (collection d'objets EmailHeader, vois la propriété header)
bodyValuesObjet(facultatif) Objet EmailBodyValue, contenant un objet pour chaque partID de bodyStructure
<partID>.valueTexteValeur d'une partie du corps
<partID>.isEncodingProblemBooléenVrai 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.

  • Texte :
    • E-mail unique : "somebody@domain.com"
    • Affichage unique nom+e-mail : "Somebody <somebody@domain.com>"
    • Plusieurs e-mails : "Somebody <somebody@domain.com>,me@home.org"
  • Objet :
    Un objet avec deux propriétés :
    PropriétéTypeDescription
    nameTexteNom affiché (peut avoir la valeur "null")
    emailTexteAdresse e-mail
  • Collection :
    Une collection d'objets adresses.

(**) Chaque e-mail envoyé contient les adresses du sender et du from :

  • Le domaine sender correspond à ce que le serveur d'e-mail de réception obtient à l'ouverture de la session.
  • L'adresse from correspond à ce que le(s) destinataire(s) visualise(nt).
    Pour mieux livrer l'e-mail, il est recommandé d'utiliser les mêmes adresses pour from et sender.

(***) 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éTypeDescription
successBooléenVrai si l'envoi est réussi. Sinon, Faux.
statusNumériqueCode du statut retourné par le serveur SMTP
statusTextTexteMessage 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 :

  • success : faux
  • status : 0
  • statusText : "Impossible d'envoyer un e-mail"

Exemple  

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



Voir aussi  

MAIL Convertir depuis MIME
MAIL Convertir vers MIME
MAIL Creer piece jointe
SMTP Creer transporteur
SMTP_transporteur.checkConnection( )

 
PROPRIÉTÉS 

Produit : 4D
Thème : Mail
Nom intl. : SMTP_transporter.send( )

Cette commande modifie la variable système Error

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v17 R4
Modifié : 4D v17 R5

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v18)
4D - Langage ( 4D v18.4)
4D - Langage ( 4D v18.6)