Mail erzeugen

es kommt häufiger vor, das wir aus einer Extension eine Mail abschicken möchten. Hierzu stellt Typo3 einige vorgefertigte Methoden zur Verfügung.

PLAINTEXT-MAIL

Die einfachste Methode eine Mail zu erzeugen bietet das cObj. Dort haben wir folgende Methode:

PHP
$this->cObj->sendNotifyEmail($msg, $recipients, $cc, $email_from, $email_fromName='', $replyTo='');

Die Parameter sind selbsterklärend.

Haben wir kein cObj zur Verfügeng, da wir z.B. ein BE-Modul haben, können wir auch die Mailmethode der t3lib_div benutzen:

PHP
t3lib_div::plainMailEncoded($email,$subject,$message,$headers='',$enc='',$charset='',$dontEncodeHeader=false);

Hier müssen wir ähnlich wie beim PHP-Aufruf mail() den Header selbst zusammenstellen.

HTML-MAIL

Interessanter wird es wenn wir eine HTML-Mail erzeugen wollen. Hierzu müssen wir das komplette HTML-Gerüst selbst erzeugen und können dann über folgenden Code eine HTML-Mail abschicken.

PHP
#hier müssen die entsprechenden Parameter gesetzt werden
$email['address']='empfaenger@zuhause.de';
$email['body']='<h1>Message</h1><p>dies ist eine HTML-Mail. Klick mal auf <a href="http://www.google.de">Google</a></p>';
$email['subject']='eine HTML-Mail';
 
$html_start='<html><head><title>HTML-Mail</title></head><body>';
$html_end='</body></html>';
 
$this->htmlMail = t3lib_div::makeInstance('t3lib_htmlmail');
$this->htmlMail->start();
$this->htmlMail->recipient = $email['address'];
$this->htmlMail->subject = $email['subject'];
$this->htmlMail->from_email = $this->conf['fromEmail'];
$this->htmlMail->from_name = 'XXX XXX';
$this->htmlMail->returnPath = $this->conf['adminEmail'];
$this->htmlMail->addPlain($email['body']);
$this->htmlMail->setHTML($this->htmlMail->encodeMsg($html_start.$email['body'].$html_end));
$this->htmlMail->send($email['address']);
6 Kommentare
#6 Matthias Krappitz schrieb am 28.01.2012 17:31
#5 Mario schrieb am 21.06.2010 23:02

Hallo Steffen, sollten bei deinem Code-Schnipsel die Bilder per CID eingebettet oder werden die Bilder einfach per HTML-Link eingebunden? Ich suche nun schon wirklich einige Zeit, habe aber außer deinem Schnipsel noch nicht viele Informationen zu diesem Thema gefunden. Ich habe die htmlmail-Klasse durchsucht, aber mir ist noch nicht ganz klar, wie ich zu meinen CIDs komme... Hast Du einen Tipp? Vielen Dank schonmal ;-) Gruß

#3 Andre schrieb am 06.05.2009 14:56

Bei mir geht das nicht mit der HTML Mail ... Muss nicht irgendwie in meiner Extension noch die Klasse t3lib_htmlmail eingebunden werden? Wie binde ich die ein?

#4 Claus schrieb am 03.06.2009 10:13

Ich glaube das liegt daran das die hier eingesetzten Code Boxen den Inhalt entweder nicht richtig anzeigen, oder beim Abspeichern manipulieren. Jedenfalls sind die Methodenaufrufe schon alle nicht korrekt.

$this-htmlMail->start();

Analog dazu alle anderen. $html_start und $html_end sind aber m.E. auch nicht korrekt.

 

Ein schönes Beispiel findet man in dieser Sammlung: dasoe.net/t3/

#2 noname schrieb am 13.02.2008 00:00

 

 

 

#1 steffen schrieb am 10.12.2006 13:29

noch zu erwähnen: sendNotifyEmail nutzt die erste Zeile als Subject, man muss also mit chr(10) trennen.

einen Kommentar schreiben
Typo3