T3 Campus T3 Campus

Wie man E-Mails in TYPO3 10 versendet

Der E-Mailversand ist ein altes aber immer noch zentrales Thema in der Webentwicklung. TYPO3 bietet mit dem Swift Mailer ein einfaches Framework mit.

Copy-and-paste Vorlagen

Einfaches Beispiel

$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailMessage::class);
$mail->setFrom(array($email => $name))
     ->setTo(array($email => $name))
     ->setSubject($subject)
     ->setBody($body)
     ->send();

Mit Dateianhängen

$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailMessage::class);
$mail->setFrom(array($email => $name))
     ->setTo(array($email => $name))
     ->setSubject($subject)
     ->setBody($body);

foreach($attachments as $attachment)
{
    $attachment = \Swift_Attachment::fromPath('/path/to/image.jpg', 'image/jpeg');
    $attachment->setFilename('example.jpg');
    $mail->attach($attachment);
}

$mail->send();

E-Mail als HTML Template

use Symfony\Component\Mime\Address;
use TYPO3\CMS\Core\Mail\FluidEmail;
use TYPO3\CMS\Core\Mail\Mailer;
use TYPO3\CMS\Core\Utility\GeneralUtility;

$mail = GeneralUtility::makeInstance(FluidEmail::class);
$mail->to('max@mustermann.de')
     ->from(new Address('campus@slavlee.de', 'Slavlee'))
     ->subject($subject)
     ->format('both') // send HTML and plaintext mail
     ->setTemplate('Example')
     ->assign('exampleVar1', 'Example value');
GeneralUtility::makeInstance(Mailer::class)->send($email);

Registrierung der Templateordner

$GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths'][] = 'EXT:example/Resources/Private/Templates/Email';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['layoutRootPaths'][] = 'EXT:example/Resources/Private/Layouts';

Erläuterungen

Ich denke, das meiste ist relativ einfach und straight forward. Das letzte Beispiel bedarf es vielleicht ein paar Erläuterungen. 

Sobald man eine HTML-E-Mail verschicken möchte, ist es sinnvoll das in Fluid umzusetzen. In TYPO3 10 wurde dieser Teil umgearbeitet und es ist nicht mehr notwendig, die StandaloneView zu nutzen. Man registriert nun am besten mittels AdditonalConfiguration.php innerhalb des typo3conf - Ordners die Templateordner für seine E-Mail Templates. Die neue Klasse: FluidEmail findet diese dann anhand des Namens. Wichtig hier, dass man einen eindeutigen Namen wählt, da ansonsten es möglich ist, andere Templatedateien von anderen Extensions mit dem gleichen Namen zu erwischen.

Bereit mehr zu lernen?

Kevin Chileong Lee

Gründer vom T3 Campus, TYPO3 Experte mit 10+ Jahren Erfahrung, TYPO3 Liebhaber.

Ich helfe dir dabei, deine Projekte in TYPO3 umzusetzen.

Insbesondere für TYPO3 Einsteiger biete ich zahlreiche kostenfreie Tutorials und kostenpflichtige Kurse rund um TYPO3 an.
Damit kannst du in wenigen Tagen auch ohne Vorkenntnisse deine erste TYPO3 Webseite erstellen und Erweiterungen programmieren.

Auf meinem YouTube-Kanal findest du viele praktische Beispiele und Videotutorials als auch allgemein Videos zu diversen TYPO3 Themen.

Neber den TYPO3 Tutorials und Kopiervorlagen, schreibe ich auch Artikel auf meinem Blog über diverse Themen und Fragen, die die meisten TYPO3 Einsteiger, haben.

Falls du ein TYPO3 Coaching suchst, dann stehe ich dir in einer 1:1 Trainingssession zur Verfügung.

Wenn du auf dem Laufenden sein möchtest über meine Projekte, dann abonniere den Newsletter.