'mail_smtpdebug' => false,
/**
- * Which mode to use for sending mail: ``sendmail``, ``smtp`` or ``qmail``.
+ * Which mode to use for sending mail: ``sendmail``, ``smtp``, ``qmail`` or ``null``.
*
* If you are using local or remote SMTP, set this to ``smtp``.
*
* For ``qmail`` the binary is /var/qmail/bin/sendmail, and it must be installed
* on your Unix system.
*
+ * Use the string ``null`` to send no mails (disable mail delivery). This can be
+ * useful if mails should be sent via APIs and rendering messages is not necessary.
+ *
* Defaults to ``smtp``
*/
'mail_smtpmode' => 'smtp',
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\Mailer as SymfonyMailer;
use Symfony\Component\Mailer\MailerInterface;
+use Symfony\Component\Mailer\Transport\NullTransport;
use Symfony\Component\Mailer\Transport\SendmailTransport;
use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport;
use Symfony\Component\Mailer\Transport\Smtp\Stream\SocketStream;
}
switch ($this->config->getSystemValueString('mail_smtpmode', 'smtp')) {
+ case 'null':
+ $transport = new NullTransport();
+ break;
case 'sendmail':
$transport = $this->getSendMailInstance();
break;
$this->assertEquals($sendmail, self::invokePrivate($this->mailer, 'getSendMailInstance'));
}
+ public function testEventForNullTransport(): void {
+ $this->config
+ ->expects($this->exactly(1))
+ ->method('getSystemValueString')
+ ->with('mail_smtpmode', 'smtp')
+ ->willReturn('null');
+
+ $message = $this->createMock(Message::class);
+ $message->expects($this->once())
+ ->method('getSymfonyEmail')
+ ->willReturn((new Email())->to('foo@bar.com')->from('bar@foo.com')->text(''));
+
+ $event = new BeforeMessageSent($message);
+ $this->dispatcher->expects($this->once())
+ ->method('dispatchTyped')
+ ->with($this->equalTo($event));
+
+ $this->mailer->send($message);
+ }
+
public function testGetInstanceDefault(): void {
$this->config
->method('getSystemValue')