diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml
index becf0d1b71..fa10ebaae3 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml
@@ -8,6 +8,7 @@
+
diff --git a/src/Symfony/Component/Mailer/Mailer.php b/src/Symfony/Component/Mailer/Mailer.php
index db87602022..8ac505b03d 100644
--- a/src/Symfony/Component/Mailer/Mailer.php
+++ b/src/Symfony/Component/Mailer/Mailer.php
@@ -17,6 +17,7 @@ use Symfony\Component\Mailer\Messenger\SendEmailMessage;
use Symfony\Component\Mailer\Transport\TransportInterface;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Mime\RawMessage;
+use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
/**
* @author Fabien Potencier
@@ -25,8 +26,9 @@ class Mailer implements MailerInterface
{
private $transport;
private $bus;
+ private $dispatcher;
- public function __construct(TransportInterface $transport, MessageBusInterface $bus = null)
+ public function __construct(TransportInterface $transport, MessageBusInterface $bus = null, EventDispatcherInterface $dispatcher = null)
{
$this->transport = $transport;
$this->bus = $bus;
@@ -40,18 +42,20 @@ class Mailer implements MailerInterface
return;
}
- $message = clone $message;
- if (null !== $envelope) {
- $envelope = clone $envelope;
- } else {
- try {
- $envelope = new DelayedSmtpEnvelope($message);
- } catch (\Exception $e) {
- throw new TransportException('Cannot send message without a valid envelope.', 0, $e);
+ if (null !== $this->dispatcher) {
+ $message = clone $message;
+ if (null !== $envelope) {
+ $envelope = clone $envelope;
+ } else {
+ try {
+ $envelope = new DelayedSmtpEnvelope($message);
+ } catch (\Exception $e) {
+ throw new TransportException('Cannot send message without a valid envelope.', 0, $e);
+ }
}
+ $event = new MessageEvent($message, $envelope, $this->transport->getName());
+ $this->dispatcher->dispatch($event);
}
- $event = new MessageEvent($message, $envelope, $this->transport->getName());
- $this->dispatcher->dispatch($event);
$this->bus->dispatch(new SendEmailMessage($message, $envelope));
}