From f0c25e2b80dcc6173b8ec0929f34ded15308b6b5 Mon Sep 17 00:00:00 2001 From: Kevin Bond Date: Thu, 10 Mar 2022 08:57:40 -0500 Subject: [PATCH] [9.x] implement email "metadata" for SesTransport --- src/Illuminate/Mail/Transport/SesTransport.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Mail/Transport/SesTransport.php b/src/Illuminate/Mail/Transport/SesTransport.php index 41022c2c2caf..daa7b71b46f5 100644 --- a/src/Illuminate/Mail/Transport/SesTransport.php +++ b/src/Illuminate/Mail/Transport/SesTransport.php @@ -5,8 +5,10 @@ use Aws\Exception\AwsException; use Aws\Ses\SesClient; use Exception; +use Symfony\Component\Mailer\Header\MetadataHeader; use Symfony\Component\Mailer\SentMessage; use Symfony\Component\Mailer\Transport\AbstractTransport; +use Symfony\Component\Mime\Message; class SesTransport extends AbstractTransport { @@ -44,10 +46,20 @@ public function __construct(SesClient $ses, $options = []) */ protected function doSend(SentMessage $message): void { + $options = $this->options; + + if ($message->getOriginalMessage() instanceof Message) { + foreach ($message->getOriginalMessage()->getHeaders()->all() as $header) { + if ($header instanceof MetadataHeader) { + $options['EmailTags'][] = ['Name' => $header->getKey(), 'Value' => $header->getValue()]; + } + } + } + try { $this->ses->sendRawEmail( array_merge( - $this->options, [ + $options, [ 'Source' => $message->getEnvelope()->getSender()->toString(), 'Destinations' => collect($message->getEnvelope()->getRecipients()) ->map