/** * Sends an Tx_Oelib_Mail object (one separate message per recipient). * * @param Tx_Oelib_Mail $email the Tx_Oelib_Mail object to send * * @return void * * @throws InvalidArgumentException */ public function send(Tx_Oelib_Mail $email) { if (!$email->hasSender()) { throw new InvalidArgumentException('$email must have a sender set.', 1331318718); } $this->validateEmailAddress($email->getSender()->getEmailAddress(), 'From:'); if ($email->getSubject() === '') { throw new InvalidArgumentException('The e-mail subject must not be empty.', 1409410879); } if (!$email->hasMessage()) { throw new InvalidArgumentException('The e-mail message must not be empty.', 1409410886); } $recipients = $email->getRecipients(); if (empty($recipients)) { throw new InvalidArgumentException('The e-mail must have at least one recipient.', 1409410886); } foreach ($recipients as $recipient) { $this->validateEmailAddress($recipient->getEmailAddress(), 'To:'); } /** @var t3lib_mail_Message $swiftMail */ $swiftMail = t3lib_div::makeInstance('t3lib_mail_Message'); $swiftMail->setSubject($email->getSubject()); $sender = $email->getSender(); $swiftMail->setFrom(array($sender->getEmailAddress() => $sender->getName())); $swiftMail->setCharset('utf-8'); $returnPath = $email->getReturnPath(); if ($returnPath !== '') { $swiftMail->setReturnPath($returnPath); } if ($email->hasMessage()) { $swiftMail->setBody($this->formatEmailBody($email->getMessage())); } if ($email->hasHTMLMessage()) { $swiftMail->addPart($email->getHTMLMessage(), 'text/html'); } /** @var Tx_Oelib_Attachment $attachment */ foreach ($email->getAttachments() as $attachment) { if ($attachment->getFileName() !== '' && $attachment->getContent() === '') { $swiftAttachment = Swift_Attachment::fromPath($attachment->getFileName(), $attachment->getContentType()); } else { $fileName = $attachment->getFileName() !== '' ? $attachment->getFileName() : NULL; $swiftAttachment = Swift_Attachment::newInstance($attachment->getContent(), $fileName, $attachment->getContentType()); } $swiftMail->attach($swiftAttachment); } foreach ($email->getRecipients() as $recipient) { $swiftMail->setTo(array($recipient->getEmailAddress() => $recipient->getName())); $this->sendSwiftMail($swiftMail); } }
/** * @test */ public function setHtmlMessageWithCssFileStoredStoresAttributesFromCssInHtmlMessage() { $this->subject->setCssFile(t3lib_extMgm::extPath('oelib') . 'Tests/Unit/Fixtures/test.css'); $this->subject->setHTMLMessage('<html>' . '<head><title>foo</title></head>' . '<body><h3>Bar</h3></body>' . '</html>'); self::assertSame('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"' . ' "http://www.w3.org/TR/REC-html40/loose.dtd">' . LF . '<html>' . LF . '<head><title>foo</title></head>' . LF . '<body><h3 style="font-weight: bold;">Bar</h3></body>' . LF . '</html>', $this->subject->getHTMLMessage()); }