Ggf. regt es auch dazu an, dass ihr euch eine eigene schreibt, die euren indiviuellen Bedürfnissen entspricht.
Ich gehe bei diesem Tutorial explizit von der Klasse htmlMimeMail5 aus, welche PHP5 voraussetzt!
Veröffentlich wurde die Klasse unter GNU GPL V2, so dass imho eine individuelle Anpassung möglich ist.
Beschreibung: http://www.phpguru.org/static/htmlMimeMail5.html
download: http://www.phpguru.org/downloads/html.mime.mail
Inhalt:
- Instanz
- Absender
- Betreffzeile
- Der Inhalt der Mail
- Absenden
- Zwischenfazit
- HTML-Mail
- Anhänge
- eingebettete Bilder
- Priorität
- Sendestatus
- mail, sendmail und smtp
- Zeichenumbruch
- CC und BCC
- header
- charset
- Beispiel
- Fazit
Instanz (up)
Klar, als erstes muss die mail-Klasse eingebunden werden:
PHP-Code:
<?php
require_once("mail/htmlMimeMail5.php");
?> PHP-Code:
<?php
require_once("mail/htmlMimeMail5.php");
$mail = new htmlMimeMail5();
?> Doch der Reihe nach:
Absender (up)
Der Absender lässt sich wie folgt festlegen:
PHP-Code:
<?php
$mail->setFrom("Hans Mustermann <hans@mustermann.tld>");
?> PHP-Code:
<?php
$mail->setFrom("hans@mustermann.tld");
?> Die Betreffzeile legt man so fest:
PHP-Code:
<?php
$mail->setSubject('Betreffzeile der E-Mail');
?> Der Inhalt wird mit folgender Methode festgelegt:
PHP-Code:
<?php
$mail->setText("Lieber Empfänger,\r\ndies ist eine E-Mail.");
?> und schon könnte man die E-Mail losschicken:
PHP-Code:
<?php
$mail->send(array('erika@mustermann.tld'));
?> PHP-Code:
<?php
$to = array();
$to[] = 'max@mustermann.tld';
$to[] = 'erika@mustermann.tld';
$mail->send($to);
?> Bis hier wäre das möglicherweise aufwändiger als mail() zu benutzen, aber logischweise kann diese Klasse noch ein wenig mehr.
HTML-Mail (up)
Als erstes wäre die Möglichkeit HTML-Mails zu verschicken:
PHP-Code:
<?php
$mail->setHTML('<body><h1>huhu</h1>eine neue E-Mail<br /><div style="z-index:3" class="smallfont" align="center">SEO by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0</div><br /><div style="z-index:3" class="smallfont" align="center">SEO by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0</div></body>');
?> Aber auch Anhänge sind leicht zu verwalten:
PHP-Code:
<?php
$mail->addAttachment(new fileAttachment('datei.zip', 'application/zip', new Base64Encoding()));
?> Selbstverständlich kann man mehrere Dateien an eine E-Mail anhängen!
eingebettete Bilder (up)
Bilder können auch in die Mail eingebaut werden, was gerade für HTML-Mails vorteilhaft ist, da moderne E-Mail-Clients externe Bilder nur nach expliziter Bestätigung zulassen.
PHP-Code:
<?php
$mail->addEmbeddedImage(new fileEmbeddedImage('background.gif', 'image/gif', new Base64Encoding()));
?> PHP-Code:
<?php
$mail->setHTML('<body background="background.gif">
<h1>huhu</h1>
eine neue E-Mail
<br /><div style="z-index:3" class="smallfont" align="center">SEO by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0</div><br /><div style="z-index:3" class="smallfont" align="center">SEO by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0</div></body>');
?> Man kann die Priorität der E-Mail ändern:
PHP-Code:
<?php
$mail->setPriority('high');
?> - high
- normal
- low
oder deren Pendants:
- 1 (für high)
- 3 (für normal)
- 5 (für (low)
Sendestatus (up)
Eine Überprüfung, ob mail(s) verschickt werden konnten kann man so realisieren:
PHP-Code:
<?php
// senden
$result = $mail->send(array('erika@mustermann.tld'));
// Sendestatus
if (!$result)
{
echo '<h2>error</h2><pre>';
print_r($mail->errors);
echo '</pre>Die Mail wurde nicht abgeschickt.';
}
else
echo 'E-Mail wurde gesand!';
?> Die Klasse bietet drei Möglichkeiten an, seine Mails loszuwerden:
- sendmail
- smtp
Standardmäßig wird mail benutzt. Um eine der anderen Arten zu nutzen muss dies als weiterer Parameter beim Aufruf der Methode send angegeben werden.
Wer sich für SMTP entscheidet, muß vorher die notwendigen Paramter dieser Methode übergeben:
PHP-Code:
$mail->setSMTPParams('', // string $host
25, // int $port
'', // string $helo
false, // bool $auth
'', // string $user
''); // string $pass
PHP-Code:
<?php
$mail->setSendmailPath('/pfad/zu/sendmail -parameter')
?> Es kann definiert werden, nach wievielen Zeichen ein Umbruch erzwungen werden soll (im Quellcode der E-Mail
PHP-Code:
<?php
$mail->setTextWrap(50);
?> CC und BCC (up)
Kopien und Blindkopien (cc und bcc) sind möglich:
PHP-Code:
<?php
$mail->setCc('kopie@mustermann.tld');
$mail->setBcc('blindkopie@mustermann.tld');
?> PHP-Code:
<?php
$mail->setReturnPath('info@mustermann.tld');
?> Weitere header lassen sich so eingeben:
PHP-Code:
<?php
$mail->setHeader('name', 'wert');
?> charset (up)
Standardmäßig wird mit dem charset ISO-8859-1 gearbeitet. Dieser läßt sich für die header, den Text- und den HTML-Teil ändern. Die dafür zu benutzenden Methoden sollen hier aber nicht mehr Bestandteil sein.
Beispiel (up)
Zum Abschluss noch ein Beispiel, wie die Nutzung dann insgesamt aussehen kann:
PHP-Code:
<?php
error_reporting(E_ALL);
require_once('mail/htmlMimeMail5.php');
$mail = new htmlMimeMail5();
// Absender
$mail->setFrom("Hans Mustermann <hans@mustermann.tld>");
// ReturnPath
$mail->setReturnPath('info@mustermann.tld');
// Betreff
$mail->setSubject('Betreffzeile der E-Mail');
// HTML-mail
$mail->setHTML('<body background="background.gif">
<h1>Hallo</h1>
schau mal - wie niedlich!!
<div align="left"><font color="#C0C0C0">--
<br>Erika Mustermann
<br>Heidestraße 17
<br>München</font></div><br /><div style="z-index:3" class="smallfont" align="center">SEO by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0</div><br /><div style="z-index:3" class="smallfont" align="center">SEO by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0</div></body>');
// Anhang
$attach = new fileAttachment('http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/200px-Cat03.jpg');
$mail->addAttachment($attach);
// senden
$result = $mail->send(array('max@mustermann.tld'));
// Sendestatus
if (!$result)
{
echo '<h2>error</h2><pre>';
print_r($mail->errors);
echo '</pre>Die Mail wurde nicht abgeschickt.';
}
else
echo 'E-Mail wurde gesand!';
?> Ich meine soetwas wie einen kleinen Fehler in der Klasse gefunden zu haben. In der Datei htmlMimeMail5.php habe in Zeile 165 folgendes hinzugefügt:
PHP-Code:
$this->headers['Date'] = date('r');
Schade finde ich auch, dass die Klasse den Empfänger nur als array annimmt. Hier wäre eine Überprüfung in der Klasse angebracht.

Bereiche
Kategorien (Alle Bereiche)
Neue Beiträge