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();