4D v18

MAIL New attachment

Home

 
4D v18
MAIL New attachment

MAIL New attachment 


 

MAIL New attachment ( value {; name {; cid {; type {; disposition}}}} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
value  Text, BLOB in Pfad der Datei als Anhang (Text) oder
Blob mit dem Anhang (BLOB)
name  Text in Name + Endung, welche der Mail Client für den Anhang verwendet
cid  Text in ID des Anhangs (nur HTML Meldungen) oder "" wenn keine cid erforderlich ist.
type  Text in Wert des Header Content-Typ
disposition  Text in Wert des Header content-disposition: "inline" oder "attachment"
Funktionsergebnis  Objekt in Anhang Objekt

Mit dem Befehl MAIL New attachment können Sie ein Objekt Anhang erstellen, das sie an ein Objekt mail anfügen können (siehe SMTP_transporter.send()).

In value übergeben Sie den Inhalt des Anhangs. Sie können folgendes übergeben:

  • value als Text mit dem Pfad der Anhangdatei, in der Syntax des Systems. Sie können den kompletten Pfadnamen übergeben oder den Dateinamen (dann sucht 4D nach der Datei im gleichen Verzeichnis wie die Strukturdatei der Anwendung).
  • value als BLOB mit dem Anhang selbst.

Im optionalen Parameter name können Sie Name und Endung angeben, die der Mail Client für den Anhang verwenden soll. Wird name weggelassen und ist:

  • value ein Dateipfad, werden Name und Endung der Datei verwendet,
  • value ein BLOB, wird automatisch ein wilkürlicher Name ohne Endung generiert.

Im optionalen Parameter cid können Sie eine interne ID für den Anhang übergeben. Das ist der Wert des Header content-id, er wird nur in HTML Meldungen verwendet. cid koppelt den Anhang mit einer Referenz, die über ein HTML Tag wie z.B. <img src="cid:ID"> im Hauptteil der Meldung definiert wird. In diesem Fall soll der Inhalt des Anhangs, z.B. ein Bild, innerhalb der Meldung im Mail Client angezeigt werden. Das Endergebnis kann je nach dem Mail Client unterschiedlich sein. Wollen Sie diesen Parameter nicht verwenden, können Sie in cid einen leeren String übergeben.

Im optionalen Parameter type können Sie explizit den Content-Typ der Anhangdatei übergeben: z.B. ein String, der einen MIME Typ ("video/mpeg") definiert. Dieser Wert des Content-Typs wird für den Anhang gesetzt, unabhängig von seiner Endung. Weitere Informationen dazu finden Sie auf der Seite MIME in Wikipedia.
Standardmäßig, also wenn dieser Parameter weggelassen wird oder einen leeren String enthält, basiert der Content-Typ der Anhangdatei auf deren Endung. Für die wichtigsten MIME Typen gelten folgende Regeln:

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

Im optionalen Parameter disposition können Sie den Header content-disposition des Anhangs angeben. Sie können eine der folgenden Konstanten unter dem Thema Mail übergeben:

Konstante Wert Kommentar
mail disposition attachment attachment Setzt den Wert des Content-disposition Header auf "attachment", d.h. die Datei als Anhang muss als Link in der Meldung erscheinen.
mail disposition inline inline Setzt den Wert des Content-disposition Header auf "inline", d.h. der Anhang muss im Inhalt der Meldung gerendert werden. Das Rendern richtet sich nach dem Mail Client.

Ohne den Parameter disposition gilt standardmäßig:

  • Mit dem Parameter cid wird der Header content-disposition auf "inline" gesetzt,
  • Ist der Parameter cid nicht übergeben oder leer, wird der Header content-disposition auf "attachment" gesetzt.

MAIL New attachment gibt ein neues Objekt Anhang zurück, das Sie der Collection attachment des Objekts mail, verwaltet über die Methode SMTP New transporter, hinzufügen können. Das Objekt enthält folgende read-only Eigenschaften und Methoden: 

EigenschaftWertBeschreibung
attachment.pathTextKompletter Pfad des Anhangs (wenn vorhanden)
attachment.nameTextName und Endung des Anhangs. Ist standardmäßig der Name der Datei.
attachment.dispositionTextWert des Header Content-Disposition: "inline" oder "attachment".
attachment.typeTextContent-Typ der Anhangdatei. Ist dieser Typ nicht explizit im Befehl MAIL New attachment übergeben, basiert der Content-Typ auf der Endung der Datei.
attachment.cidTextID des Anhangs (nur in HTML Meldungen). Fehlt diese Eigenschaft, wird die Datei als einfacher Anhang verwaltet (link)

 

MethodeBeschreibung
attachment.getContent( )Gibt Inhalt des Anhangs zurück

Sie wollen ein E-Mail senden mit einer vom Benutzer gewählten Datei als Anhang und einem Bild, das im HTML Hauptteil eingebunden ist:

 $doc:=Select document("";"*";"Bitte wählen Sie die Datei für den Anhang";0)
 If(OK=1) //Wurde ein Dokument ausgewählt
 
    C_OBJECT($email;$server;$transporter)
 
    $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:="Dies ist eine Testmeldung mit Anhängen"
 
  //Link zum Download der Datei hinzufügen
    $email.attachments:=New collection(MAIL New attachment(Document))
  //eingebundenes Bild einfügen (ein cid verwenden)
    $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//Mail senden
 
 End if

Sie wollen eine E-Mail mit einem 4D Write Pro Bereich als Anhang senden:

 C_BLOB($blob)
 WP EXPORT VARIABLE(WPArea;$blob;wk docx)
 
 C_OBJECT($email;$server;$transporter)
 
 $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:="Neuer Jahresbericht"
 $email.textBody:="Anbei erhalten Sie unseren aktuellen Jahresbericht."
 $email.attachments:=New collection(MAIL New attachment($blob;"Annual report.docx"))
 
 $transporter.send($email)



Siehe auch 

attachment.cid
attachment.disposition
attachment.getContent( )
attachment.name
attachment.path
attachment.type
SMTP_transporter.send()

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Mail
Nummer: 1644

Dieser Befehl kann in preemptive Prozessen laufen

 
GESCHICHTE 

Erstellt: 4D v17 R4

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v18)