+ */
+class MessageLoggerListener implements EventSubscriberInterface, ResetInterface
+{
+ private $events;
+
+ public function __construct()
+ {
+ $this->events = new MessageEvents();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function reset()
+ {
+ $this->events = new MessageEvents();
+ }
+
+ public function onMessage(MessageEvent $event): void
+ {
+ $this->events->add($event);
+ }
+
+ public function getEvents(): MessageEvents
+ {
+ return $this->events;
+ }
+
+ public static function getSubscribedEvents()
+ {
+ return [
+ MessageEvent::class => ['onMessage', -255],
+ ];
+ }
+}
diff --git a/src/Symfony/Component/Mailer/Mailer.php b/src/Symfony/Component/Mailer/Mailer.php
index 324f50cad7803..db87602022c63 100644
--- a/src/Symfony/Component/Mailer/Mailer.php
+++ b/src/Symfony/Component/Mailer/Mailer.php
@@ -11,6 +11,8 @@
namespace Symfony\Component\Mailer;
+use Symfony\Component\Mailer\Event\MessageEvent;
+use Symfony\Component\Mailer\Exception\TransportException;
use Symfony\Component\Mailer\Messenger\SendEmailMessage;
use Symfony\Component\Mailer\Transport\TransportInterface;
use Symfony\Component\Messenger\MessageBusInterface;
@@ -38,6 +40,19 @@ public function send(RawMessage $message, SmtpEnvelope $envelope = null): void
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);
+ }
+ }
+ $event = new MessageEvent($message, $envelope, $this->transport->getName());
+ $this->dispatcher->dispatch($event);
+
$this->bus->dispatch(new SendEmailMessage($message, $envelope));
}
}
diff --git a/src/Symfony/Component/Mailer/Transport/AbstractTransport.php b/src/Symfony/Component/Mailer/Transport/AbstractTransport.php
index 3dd59c195c302..90b04c19abbba 100644
--- a/src/Symfony/Component/Mailer/Transport/AbstractTransport.php
+++ b/src/Symfony/Component/Mailer/Transport/AbstractTransport.php
@@ -69,7 +69,7 @@ public function send(RawMessage $message, SmtpEnvelope $envelope = null): ?SentM
}
}
- $event = new MessageEvent($message, $envelope);
+ $event = new MessageEvent($message, $envelope, $this->getName(), true);
$this->dispatcher->dispatch($event);
$envelope = $event->getEnvelope();
if (!$envelope->getRecipients()) {
diff --git a/src/Symfony/Component/Mailer/composer.json b/src/Symfony/Component/Mailer/composer.json
index 5c4ad672a7bc8..9d63924b08e70 100644
--- a/src/Symfony/Component/Mailer/composer.json
+++ b/src/Symfony/Component/Mailer/composer.json
@@ -20,7 +20,8 @@
"egulias/email-validator": "^2.0",
"psr/log": "~1.0",
"symfony/event-dispatcher": "^4.3",
- "symfony/mime": "^4.3.3|^5.0"
+ "symfony/mime": "^4.3.3|^5.0",
+ "symfony/service-contracts": "^1.1"
},
"require-dev": {
"symfony/amazon-mailer": "^4.4|^5.0",
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy