-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Closed
Description
Symfony version(s) affected: 5.x
Description
When sending a TemplatedEmail asynchronously, an exception is thrown : Symfony\Component\Mime\Exception\LogicException: A message must have a text or an HTML part or attachments..
The rendering of the templated is not done, as it's deferred to the actual email sending, but when the messenger's message is created it fails:
1) Symfony\Bundle\FrameworkBundle\Tests\Functional\MailerTest::testSendingQueuedMessage
Symfony\Component\Mime\Exception\LogicException: A message must have a text or an HTML part or attachments.
/symfony/src/Symfony/Component/Mime/Email.php:405
/symfony/src/Symfony/Component/Mailer/SentMessage.php:33
/symfony/src/Symfony/Component/Mailer/Transport/AbstractTransport.php:67
/symfony/src/Symfony/Component/Mailer/Mailer.php:42
/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/MailerTest.php:132
How to reproduce
With a the following test, or by sending async templated messages as documented here: https://symfony.com/doc/current/mailer.html#sending-messages-async
class MailerTest extends AbstractWebTestCase
{
public function testSendingQueuedMessage()
{
self::bootKernel(['test_case' => 'Mailer']);
$testTransport = new class() extends AbstractTransport {
public function __toString(): string
{
return 'dummy://local';
}
protected function doSend(SentMessage $message): void
{
}
};
$mailer = new Mailer($testTransport);
$message = (new TemplatedEmail())
->subject('Test subject')
->from('[email protected]')
->to('[email protected]')
->htmlTemplate('template.html.twig')
;
$mailer->send($message);
}
}