diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillApiTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillApiTransportTest.php index 51cfa45c0f1fa..152e198309dc3 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillApiTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillApiTransportTest.php @@ -148,6 +148,7 @@ public function testCanHaveMultipleTags() { $email = new Email(); $email->getHeaders()->add(new TagHeader('password-reset,user')); + $email->getHeaders()->add(new TagHeader('another')); $envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]); $transport = new MandrillApiTransport('ACCESS_KEY'); @@ -158,6 +159,6 @@ public function testCanHaveMultipleTags() $this->assertArrayHasKey('message', $payload); $this->assertArrayNotHasKey('headers', $payload['message']); $this->assertArrayHasKey('tags', $payload['message']); - $this->assertSame(['password-reset', 'user'], $payload['message']['tags']); + $this->assertSame(['password-reset', 'user', 'another'], $payload['message']['tags']); } } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillHttpTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillHttpTransportTest.php index 48faa7f2fd2b5..8f5eeb1f02012 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillHttpTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillHttpTransportTest.php @@ -112,6 +112,7 @@ public function testTagAndMetadataHeaders() $email = new Email(); $email->getHeaders()->addTextHeader('foo', 'bar'); $email->getHeaders()->add(new TagHeader('password-reset,user')); + $email->getHeaders()->add(new TagHeader('another')); $email->getHeaders()->add(new MetadataHeader('Color', 'blue')); $email->getHeaders()->add(new MetadataHeader('Client-ID', '12345')); @@ -122,7 +123,7 @@ public function testTagAndMetadataHeaders() $this->assertCount(3, $email->getHeaders()->toArray()); $this->assertSame('foo: bar', $email->getHeaders()->get('FOO')->toString()); - $this->assertSame('X-MC-Tags: password-reset,user', $email->getHeaders()->get('X-MC-Tags')->toString()); + $this->assertSame('X-MC-Tags: password-reset,user,another', $email->getHeaders()->get('X-MC-Tags')->toString()); $this->assertSame('X-MC-Metadata: '.json_encode(['Color' => 'blue', 'Client-ID' => '12345']), $email->getHeaders()->get('X-MC-Metadata')->toString()); } } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillSmtpTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillSmtpTransportTest.php index c6ed7cd9888d5..e2b0e7ff38c7a 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillSmtpTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillSmtpTransportTest.php @@ -24,6 +24,7 @@ public function testTagAndMetadataHeaders() $email = new Email(); $email->getHeaders()->addTextHeader('foo', 'bar'); $email->getHeaders()->add(new TagHeader('password-reset,user')); + $email->getHeaders()->add(new TagHeader('another')); $email->getHeaders()->add(new MetadataHeader('Color', 'blue')); $email->getHeaders()->add(new MetadataHeader('Client-ID', '12345')); @@ -34,7 +35,7 @@ public function testTagAndMetadataHeaders() $this->assertCount(3, $email->getHeaders()->toArray()); $this->assertSame('foo: bar', $email->getHeaders()->get('FOO')->toString()); - $this->assertSame('X-MC-Tags: password-reset,user', $email->getHeaders()->get('X-MC-Tags')->toString()); + $this->assertSame('X-MC-Tags: password-reset,user,another', $email->getHeaders()->get('X-MC-Tags')->toString()); $this->assertSame('X-MC-Metadata: '.json_encode(['Color' => 'blue', 'Client-ID' => '12345']), $email->getHeaders()->get('X-MC-Metadata')->toString()); } } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillApiTransport.php index 2ba4f5e3b56ef..2c0047025716c 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillApiTransport.php @@ -124,7 +124,10 @@ private function getPayload(Email $email, Envelope $envelope): array } if ($header instanceof TagHeader) { - $payload['message']['tags'] = explode(',', $header->getValue()); + $payload['message']['tags'] = array_merge( + $payload['message']['tags'] ?? [], + explode(',', $header->getValue()) + ); continue; } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillHeadersTrait.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillHeadersTrait.php index 2ca440560aeb2..73c3dbd010640 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillHeadersTrait.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillHeadersTrait.php @@ -36,10 +36,11 @@ private function addMandrillHeaders(Message $message): void { $headers = $message->getHeaders(); $metadata = []; + $tags = []; foreach ($headers->all() as $name => $header) { if ($header instanceof TagHeader) { - $headers->addTextHeader('X-MC-Tags', $header->getValue()); + $tags[] = $header->getValue(); $headers->remove($name); } elseif ($header instanceof MetadataHeader) { $metadata[$header->getKey()] = $header->getValue(); @@ -47,6 +48,10 @@ private function addMandrillHeaders(Message $message): void } } + if ($tags) { + $headers->addTextHeader('X-MC-Tags', implode(',', $tags)); + } + if ($metadata) { $headers->addTextHeader('X-MC-Metadata', json_encode($metadata)); }