+ */
+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 324f50cad780..db87602022c6 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 3dd59c195c30..90b04c19abbb 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 5c4ad672a7bc..9d63924b08e7 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