TYPO3 6.x – Mails mit Anhängen

Das prinzipielle Vorgehen zum Versand von Mails über die „neue“ Mail-API von TYPO3 hatte Jigal dereinst schön im Artikel „New mail API for the core“ erklärt.

Etwas tricky wird es in TYPO3 6.x durch die Einführung der Namespaces. Denn TYPO3 erweitert nur einige Klasse des Swiftmailers, nicht aber alle. Somit bewegen sich viele Aufrufe innerhalb der TYPO3-Namespaces (z.B. TYPO3\CMS\Core\Mail), während andere Klassen- und Methodenaufrufe kläglich scheitern, weil die Swiftmailer-Klassen nicht gefunden werden (z.B. Swift_Attachment::fromPath($path)).

Lösung

Die Lösung des Problems ist eigentlich ganz trivial: aus der eigenen (namespace-behafteten) Extension einfach wieder in den globalen Namespace wechseln, indem vor alle Swiftmailer-eigenen Klassen ein Backslash gesetzt wird.

$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
$mail->setFrom(array($senderEmail => $senderName));
$mail->setTo(array($receiverEmail => $receiverName));
$mail->setSubject($subject);
$mail->setBody($body, 'text/html');

$attachment = \Swift_Attachment::fromPath($imgPath, 'image/jpeg');
$mail->attach($attachment);

$mail->send();

Quellen

  1. buzz.typo3.org: New mail API for the core (als PDF-Backup)
  2. [FLOW3-general] Swift Mailer Attachment (als PDF-Backup)

Hinterlasse einen Kommentar.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.