Aller au contenu principal
Version: 20 R7 BETA

MAIL New attachment

Historique
ReleaseModifications
19 R2Accepte 4D.File, 4D.ZipFile, 4D.Blob

MAIL New attachment( file : 4D.File { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( zipFile : 4D.ZipFile { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( blob : 4D.Blob { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( path : Text { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment

ParamètresTypeDescription
ParamètresTypeDescription
******:---:***
file4D.FileFichier joint
zipFile4D.ZipFileFichier Zip joint
blob4D.BlobBlob contenant la pièce jointe
pathTextChemin de la pièce jointe
nameTextNom + extension utilisés par le client de messagerie pour désigner la pièce jointe
cidTextID de la pièce jointe (messages HTML uniquement) ou " " si aucun cid n'est requis
typeTextValeur de l'en-tête content-type
dispositionTextValeur de l'en-tête content-disposition : "inline" ou "attachment"
Résultat4D.MailAttachmentObjet pièce jointe

Description

The MAIL New attachment command allows you to create an attachment object that you can add to an Email object.

Pour définir l'objet attachment, vous pouvez utiliser :

  • un file, en passant un objet 4D.File contenant le fichier joint.
  • un zipfile, en passant un objet 4D.ZipFile contenant le fichier joint.
  • un blob, en passant un objet 4D.Blob contenant la pièce jointe elle-même.
  • un path, en passant une valeur de type text contenant le chemin d'accès du fichier joint, exprimé avec la syntaxe du système. Vous pouvez passer un nom de chemin complet ou un simple nom de fichier (auquel cas 4D recherchera le fichier dans le même répertoire que le fichier du projet).

Le paramètre facultatif name vous permet de passer le nom et l'extension à utiliser par le client de messagerie pour désigner la pièce jointe. Si le paramètre name est omis et que :

  • vous avez passé un chemin d'accès au fichier, le nom et l'extension du fichier sont utilisés,
  • vous avez passé un BLOB, un nom aléatoire sans extension est automatiquement généré.

Le paramètre facultatif cid vous permet de passer un ID interne pour la pièce jointe. Cet ID est la valeur de l'en-tête Content-Id et sera utilisé dans les messages HTML uniquement. Le cid associe la pièce jointe à une référence définie dans le corps du message à l'aide d'une balise HTML telle que \<img src="cid:ID">. Cela signifie que le contenu de la pièce jointe (par exemple, une image) doit être affiché dans le message sur le client de messagerie. Le résultat final peut varier en fonction du client de messagerie. Vous pouvez passer une chaîne vide dans cid si vous ne souhaitez pas utiliser ce paramètre.

Vous pouvez utiliser le paramètre optionnel type pour définir explicitement le content-type du fichier joint. Par exemple, vous pouvez passer une chaîne définissant un type MIME ("video/mpeg"). Cette valeur de content-type sera définie pour la pièce jointe, quelle que soit son extension. Pour plus d'informations sur les types MIME, veuillez vous référer à la page type MIME sur Wikipedia.

Par défaut, si le paramètre type est omis ou contient une chaîne vide, le content-type du fichier joint est basé sur son extension. Les règles suivantes sont appliquées pour les principaux types MIME :

ExtensionContent Type
jpg, jpegimage/jpeg
pngimage/png
gifimage/gif
pdfapplication/pdf
docapplication/msword
xlsapplication/vnd.ms-excel
pptapplication/vnd.ms-powerpoint
zipapplication/zip
gzapplication/gzip
jsonapplication/json
jsapplication/javascript
psapplication/postscript
xmlapplication/xml
htm, htmltext/html
mp3audio/mpeg
otherapplication/octet-stream

Le paramètre facultatif disposition vous permet de passer l'en-tête content-disposition de la pièce jointe. Vous pouvez passer l'une des constantes suivantes du thème de constantes "Mail" :

ConstanteValeurCommentaire
mail disposition attachment"attachment"Définissez la valeur de l'en-tête Content-disposition sur "attachment", ce qui signifie que le fichier joint doit être fourni sous forme de lien dans le message.
mail disposition inline"inline"Définissez la valeur de l'en-tête Content-disposition sur "inline", ce qui signifie que la pièce jointe doit être rendue dans le contenu du message, à l'emplacement du "cid". Le rendu dépend du client de messagerie.

Par défaut, si le paramètre disposition est omis :

  • si le paramètre cid est utilisé, l'en-tête Content-disposition est défini sur "inline",
  • si le paramètre cid n'est pas passé ou est vide, l'en-tête Content-disposition est fixé à "attachment".

Exemple 1

Vous souhaitez envoyer un e-mail avec un fichier sélectionné par l'utilisateur comme pièce jointe et une image intégrée dans le corps HTML :

$doc:=Select document("";"*";"Please select a file to attach";0)
If (OK=1) //If a document was selected

var $email;$server;$transporter : Object

$server:=New object
$server.host:="smtp.mail.com"
$server.user:="test_user@mail.com"
$server.password:="p@ssw@rd"
$transporter:=SMTP New transporter($server)

$email:=New object
$email.from:="test_user@mail.com"
$email.to:="test_user@mail.com"
$email.subject:="This is a test message with attachments"

//add a link to download file
$email.attachments:=New collection(MAIL New attachment(Document))
//insert an inline picture (use a cid)
$email.attachments[1]:=MAIL New attachment("c:\\Pictures\\4D.jpg";"";"4D")

$email.htmlBody:="<html>"+\
"<body>Hello World!"+\
"<img src='cid:4D' >"+\
"</body>"+\
"</head>"+\
"</html>"

$transporter.send($email) //send mail

End if

Exemple 2

Vous voulez envoyer un e-mail avec une zone 4D Write Pro en pièce jointe :

var $blob : blob
WP EXPORT VARIABLE(WPArea;$blob;wk docx)

var $email;$server;$transporter : Object

$server:=New object
$server.host:="smtp.mail.com"
$server.user:="user@mail.com"
$server.password:="p@ssw@rd"
$transporter:=SMTP New transporter($server)

$email:=New object
$email.from:="user@mail.com"
$email.to:="customer@mail.com"
$email.subject:="New annual report"
$email.textBody:="Please find enclosed our latest annual report."
$email.attachments:=New collection(MAIL New attachment($blob;"Annual report.docx"))

$transporter.send($email)