From 09d49f98755462dd50fa27c4536f3e4b8bd93b29 Mon Sep 17 00:00:00 2001 From: Romanavr Date: Thu, 28 Sep 2023 18:26:25 +0300 Subject: [PATCH] [Mailer] [Mailgun] Fix outlook sender --- .../Tests/Transport/MailgunApiTransportTest.php | 5 ++++- .../Tests/Transport/MailgunHttpTransportTest.php | 12 ++++++++++-- .../Bridge/Mailgun/Transport/MailgunApiTransport.php | 1 + .../Mailgun/Transport/MailgunHttpTransport.php | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php index 4cd9ce40c00e9..808798ea88748 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php @@ -61,6 +61,8 @@ public function testCustomHeader() $deliveryTime = (new \DateTimeImmutable('2020-03-20 13:01:00'))->format(\DateTimeInterface::RFC2822); $email = new Email(); + $envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]); + $email->getHeaders()->addTextHeader('h:sender', $envelope->getSender()->toString()); $email->getHeaders()->addTextHeader('h:X-Mailgun-Variables', $json); $email->getHeaders()->addTextHeader('h:foo', 'foo-value'); $email->getHeaders()->addTextHeader('t:text', 'text-value'); @@ -69,7 +71,6 @@ public function testCustomHeader() $email->getHeaders()->addTextHeader('template', 'template-value'); $email->getHeaders()->addTextHeader('recipient-variables', 'recipient-variables-value'); $email->getHeaders()->addTextHeader('amp-html', 'amp-html-value'); - $envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]); $transport = new MailgunApiTransport('ACCESS_KEY', 'DOMAIN'); $method = new \ReflectionMethod(MailgunApiTransport::class, 'getPayload'); @@ -78,6 +79,8 @@ public function testCustomHeader() $this->assertArrayHasKey('h:X-Mailgun-Variables', $payload); $this->assertEquals($json, $payload['h:X-Mailgun-Variables']); + $this->assertArrayHasKey('h:sender', $payload); + $this->assertEquals($envelope->getSender()->toString(), $payload['h:sender']); $this->assertArrayHasKey('h:foo', $payload); $this->assertEquals('foo-value', $payload['h:foo']); $this->assertArrayHasKey('t:text', $payload); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunHttpTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunHttpTransportTest.php index 85342c23368d6..cc83f6f0db074 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunHttpTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunHttpTransportTest.php @@ -69,6 +69,8 @@ public function testSend() $this->assertStringContainsString('Subject: Hello!', $content); $this->assertStringContainsString('To: Saif Eddin ', $content); $this->assertStringContainsString('From: Fabien ', $content); + $this->assertStringContainsString('Sender: Senior Fabien Eddin ', $content); + $this->assertStringContainsString('h:sender: "Senior Fabien Eddin" ', $content); $this->assertStringContainsString('Hello There!', $content); return new MockResponse(json_encode(['id' => 'foobar']), [ @@ -79,11 +81,17 @@ public function testSend() $transport->setPort(8984); $mail = new Email(); + $toAddress = new Address('saif.gmati@symfony.com', 'Saif Eddin'); + $fromAddress = new Address('fabpot@symfony.com', 'Fabien'); + $senderAddress = new Address('fabpot@symfony.com', 'Senior Fabien Eddin'); $mail->subject('Hello!') - ->to(new Address('saif.gmati@symfony.com', 'Saif Eddin')) - ->from(new Address('fabpot@symfony.com', 'Fabien')) + ->to($toAddress) + ->from($fromAddress) + ->sender($senderAddress) ->text('Hello There!'); + $mail->getHeaders()->addHeader('h:sender', $mail->getSender()->toString()); + $message = $transport->send($mail); $this->assertSame('foobar', $message->getMessageId()); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunApiTransport.php index 64c9703dd158f..36fb59c8e6f67 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunApiTransport.php @@ -87,6 +87,7 @@ protected function doSendApi(SentMessage $sentMessage, Email $email, Envelope $e private function getPayload(Email $email, Envelope $envelope): array { $headers = $email->getHeaders(); + $headers->addHeader('h:sender', $envelope->getSender()->toString()); $html = $email->getHtmlBody(); if (null !== $html && \is_resource($html)) { if (stream_get_meta_data($html)['seekable'] ?? false) { diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunHttpTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunHttpTransport.php index 7dbbb8dce9dab..1af78bfd1a39a 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunHttpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunHttpTransport.php @@ -53,6 +53,7 @@ public function __toString(): string protected function doSendHttp(SentMessage $message): ResponseInterface { $body = new FormDataPart([ + 'h:sender' => $message->getEnvelope()->getSender()->toString(), 'to' => implode(',', $this->stringifyAddresses($message->getEnvelope()->getRecipients())), 'message' => new DataPart($message->toString(), 'message.mime'), ]);