In dem Artikel E-Mails mit conzept 16 wurde Ihnen die E-Mail-Programmierung erläutert, wie Sie E-Mails erstellen, diese aufbereiten und versenden können. Auf einige Funktionen bin ich aber nicht eingegangen, so beispielsweise das Einbinden von Dateien in den HTML-Text oder das Hinzufügen von Anhängen mit speziellem MIME-Typ. Diese und weitere Themen werden in folgendem Artikel behandelt.
Die automatische E-Mail-Benachrichtigung verwendet intern ebenfalls die Mail-Befehle.
Dieser Artikel befasst sich mit folgenden Themen:
Kodierung
Jede Datei einer E-Mail, sowohl der Nachrichteninhalt als auch Anhang, wird auf eine bestimmte Art und Weise kodiert. Es stehen drei Möglichkeiten der Kodierung zur Verfügung:
- base64 (
_MimeTE_B64
)
Aus einer beliebigen Bytefolge wird durch eine „3 in 4“-Umwandlung eine lesbare Zeichenfolge erzeugt. Dies ist das Standardkodierungsverfahren für Anhänge. - quoted-printable (
_MimeTE_QP
)
Steuerzeichen, ASCII-Zeichen oberhalb von 127 und einige Sonderzeichen werden durch eine hexadezimale Darstellung ersetzt. Dies ist das Standardkodierungsverfahren für Texte. - 8-Bit (
_MimeTE_8B
)
Es erfolgt keine Kodierung. Diese Option kann nur für Text ohne Steuerzeichen verwendet werden.
Das „TE“ in den Konstanten steht für Transfer Encoding (deutsch Übertragungs Kodierung).
// Plain-Text nicht kodieren
tMail->MailData(_MailFile | _MimeTE_8B, _Sys->spPathDesktop + 'welcome.txt');
// Word-Datei quoted-printable kodieren
tMail->MailData(_MailFile | _MimeAppMSWORD | _MimeTE_QP, _Sys->spPathMyDocuments + 'welcome.dox');
Zeichensatz
Für den Nachrichteninhalt kann zusätzlich ein Zeichensatz angegeben werden. Standardmäßig wird der ISO-8859-1 Zeichensatz verwendet. In diesem sind allerdings nur ein Teil der westeuropäischen Sonderzeichen enthalten. Es fehlt beispielsweise das Eurosymbol. Alternativ kann einer der folgenden Zeichensätze verwendet werden.
_MimeCS_IBM437
(Codepage 437)_MimeCS_IBM850
(Codepage 850)_MimeCS_UTF8
(Unicode)
Das „CS“ in den Konstanten steht für Charset (deutsch Zeichensatz).
// HTML-Text im UTF-8 Zeichensatz
tMail->MailData(_MailFile | _MimeTextHTML | _MimeCS_UTF8, _Sys->spPathDesktop + 'welcome.html');
Einbetten von Anhängen in den HTML-Text
Beim Versenden einer HTML-Mail können Anhänge in die Nachricht eingebettet werden. Dazu muss beim Anhängen der Datei die Konstante _MimeRelated
verwendet werden. Weiterhin muss die HTML-Referenz im fünften Argument angegeben werden. Die HTML-Referenz ist der Name der Datei, der beispielsweise in dem src
-Attribut eines img
-Elementes angegeben ist.
Es ist sowohl die Angabe einer vollständigen URI als auch die Angabe eines symbolischen Namens möglich. Dadurch kann eine komplette HTML-Seite ohne Veränderung per E-Mail versendet werden.
HTML-Text:
<html>
<body>
<img src="http://www.myaddress.com/images/mailheader.png"/>
...
<img src="mailfooter.png"/>
</body>
</html>
Um die Bilder in die HTML-Mail einzubetten, müssen sie wie folgt angehängt werden:
// mailheader.png einbetten
tMail->MailData(_MailFile | _MimeImagePNG, _Sys->spPathMyPictures + 'header.png',
'', 'http://www.myaddress.com/images/mailheader.png');
// mailfooter.png einbetten
tMail->MailData(_MailFile | _MimeImagePNG, _Sys->spPathMyPictures + 'footer.png',
'', 'mailfooter.png');
Verwenden spezieller MIME-Typen
Für Anhänge ist die Angabe des MIME-Typen notwendig. Wenn ein MIME-Typ verwendet werden soll, der nicht über eine conzept 16-Konstante definiert ist,
kann eine der folgenden Konstanten verwendet werden:
_MimeOtherB64
– Die Datei wird base64 kodiert._MimeOtherQP
– Die Datei wird printed quotable kodiert._MimeOther8B
– Die Datei wird nicht kodiert.
Dabei wird im vierten Argument der MIME-Typ als Alpha-Wert übergeben.
Eine Übersicht aller bekannten MIME-Typen finden Sie unter SELFHTML.
// Audio-Datei als Anhang
tMail->MailData(_MailFile | _MimeOtherB64, _Sys->spPathMyMusic + 'mario.wav','audio/x-wav');
// RTF-Text als Anhang
tMail->MailData(_MailFile | _MimeOtherQP, _Sys->spPathMyDocuments + 'info.rtf','text/rtf');
Falls zu einer Datei kein MIME-Typ definiert ist, z. B. Datenbankdefinition (.d01), kann ein allgemeiner MIME-Typ mit der Konstante _MimeApp
definiert werden.
// Datenbankdefinition hinzufügen
tMail->MailData(_MailFile | _MimeApp, _Sys->spPathDesktop + 'update.d01');
Waren diese Tipps zur E-Mail-Programmierung hilfreich? Ihr Feedback gerne an unseren Support.