Skip to content

Commit c877c84

Browse files
Nyholmnicolas-grekas
authored andcommitted
[Mailer] Make sure you can pass custom headers to Mailgun
1 parent 9541c55 commit c877c84

16 files changed

+160
-8
lines changed

Mailchimp/Tests/Transport/MandrillApiTransportTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillApiTransport;
16+
use Symfony\Component\Mailer\Envelope;
17+
use Symfony\Component\Mime\Address;
18+
use Symfony\Component\Mime\Email;
1619

1720
class MandrillApiTransportTest extends TestCase
1821
{
@@ -41,4 +44,21 @@ public function getTransportData()
4144
],
4245
];
4346
}
47+
48+
public function testCustomHeader()
49+
{
50+
$email = new Email();
51+
$email->getHeaders()->addTextHeader('foo', 'bar');
52+
$envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]);
53+
54+
$transport = new MandrillApiTransport('ACCESS_KEY');
55+
$method = new \ReflectionMethod(MandrillApiTransport::class, 'getPayload');
56+
$method->setAccessible(true);
57+
$payload = $method->invoke($transport, $email, $envelope);
58+
59+
$this->assertArrayHasKey('message', $payload);
60+
$this->assertArrayHasKey('headers', $payload['message']);
61+
$this->assertCount(1, $payload['message']['headers']);
62+
$this->assertEquals('foo: bar', $payload['message']['headers'][0]);
63+
}
4464
}

Mailchimp/Transport/MandrillApiTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private function getPayload(Email $email, Envelope $envelope): array
111111
continue;
112112
}
113113

114-
$payload['message']['headers'][] = $name.': '.$header->toString();
114+
$payload['message']['headers'][] = $name.': '.$header->getBodyAsString();
115115
}
116116

117117
return $payload;

Mailgun/Tests/Transport/MailgunApiTransportTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunApiTransport;
16+
use Symfony\Component\Mailer\Envelope;
17+
use Symfony\Component\Mime\Address;
18+
use Symfony\Component\Mime\Email;
1619

1720
class MailgunApiTransportTest extends TestCase
1821
{
@@ -45,4 +48,20 @@ public function getTransportData()
4548
],
4649
];
4750
}
51+
52+
public function testCustomHeader()
53+
{
54+
$json = json_encode(['foo' => 'bar']);
55+
$email = new Email();
56+
$email->getHeaders()->addTextHeader('X-Mailgun-Variables', $json);
57+
$envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]);
58+
59+
$transport = new MailgunApiTransport('ACCESS_KEY', 'DOMAIN');
60+
$method = new \ReflectionMethod(MailgunApiTransport::class, 'getPayload');
61+
$method->setAccessible(true);
62+
$payload = $method->invoke($transport, $email, $envelope);
63+
64+
$this->assertArrayHasKey('h:x-mailgun-variables', $payload);
65+
$this->assertEquals($json, $payload['h:x-mailgun-variables']);
66+
}
4867
}

Mailgun/Transport/MailgunApiTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private function getPayload(Email $email, Envelope $envelope): array
114114
continue;
115115
}
116116

117-
$payload['h:'.$name] = $header->toString();
117+
$payload['h:'.$name] = $header->getBodyAsString();
118118
}
119119

120120
return $payload;

MailgunApiTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private function getPayload(Email $email, Envelope $envelope): array
114114
continue;
115115
}
116116

117-
$payload['h:'.$name] = $header->toString();
117+
$payload['h:'.$name] = $header->getBodyAsString();
118118
}
119119

120120
return $payload;

MailgunApiTransportTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunApiTransport;
16+
use Symfony\Component\Mailer\Envelope;
17+
use Symfony\Component\Mime\Address;
18+
use Symfony\Component\Mime\Email;
1619

1720
class MailgunApiTransportTest extends TestCase
1821
{
@@ -45,4 +48,20 @@ public function getTransportData()
4548
],
4649
];
4750
}
51+
52+
public function testCustomHeader()
53+
{
54+
$json = json_encode(['foo' => 'bar']);
55+
$email = new Email();
56+
$email->getHeaders()->addTextHeader('X-Mailgun-Variables', $json);
57+
$envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]);
58+
59+
$transport = new MailgunApiTransport('ACCESS_KEY', 'DOMAIN');
60+
$method = new \ReflectionMethod(MailgunApiTransport::class, 'getPayload');
61+
$method->setAccessible(true);
62+
$payload = $method->invoke($transport, $email, $envelope);
63+
64+
$this->assertArrayHasKey('h:x-mailgun-variables', $payload);
65+
$this->assertEquals($json, $payload['h:x-mailgun-variables']);
66+
}
4867
}

MandrillApiTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private function getPayload(Email $email, Envelope $envelope): array
111111
continue;
112112
}
113113

114-
$payload['message']['headers'][] = $name.': '.$header->toString();
114+
$payload['message']['headers'][] = $name.': '.$header->getBodyAsString();
115115
}
116116

117117
return $payload;

MandrillApiTransportTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillApiTransport;
16+
use Symfony\Component\Mailer\Envelope;
17+
use Symfony\Component\Mime\Address;
18+
use Symfony\Component\Mime\Email;
1619

1720
class MandrillApiTransportTest extends TestCase
1821
{
@@ -41,4 +44,21 @@ public function getTransportData()
4144
],
4245
];
4346
}
47+
48+
public function testCustomHeader()
49+
{
50+
$email = new Email();
51+
$email->getHeaders()->addTextHeader('foo', 'bar');
52+
$envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]);
53+
54+
$transport = new MandrillApiTransport('ACCESS_KEY');
55+
$method = new \ReflectionMethod(MandrillApiTransport::class, 'getPayload');
56+
$method->setAccessible(true);
57+
$payload = $method->invoke($transport, $email, $envelope);
58+
59+
$this->assertArrayHasKey('message', $payload);
60+
$this->assertArrayHasKey('headers', $payload['message']);
61+
$this->assertCount(1, $payload['message']['headers']);
62+
$this->assertEquals('foo: bar', $payload['message']['headers'][0]);
63+
}
4464
}

Postmark/Tests/Transport/PostmarkApiTransportTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkApiTransport;
16+
use Symfony\Component\Mailer\Envelope;
17+
use Symfony\Component\Mime\Address;
18+
use Symfony\Component\Mime\Email;
1619

1720
class PostmarkApiTransportTest extends TestCase
1821
{
@@ -41,4 +44,21 @@ public function getTransportData()
4144
],
4245
];
4346
}
47+
48+
public function testCustomHeader()
49+
{
50+
$email = new Email();
51+
$email->getHeaders()->addTextHeader('foo', 'bar');
52+
$envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]);
53+
54+
$transport = new PostmarkApiTransport('ACCESS_KEY');
55+
$method = new \ReflectionMethod(PostmarkApiTransport::class, 'getPayload');
56+
$method->setAccessible(true);
57+
$payload = $method->invoke($transport, $email, $envelope);
58+
59+
$this->assertArrayHasKey('Headers', $payload);
60+
$this->assertCount(1, $payload['Headers']);
61+
62+
$this->assertEquals(['Name' => 'foo', 'Value' => 'bar'], $payload['Headers'][0]);
63+
}
4464
}

Postmark/Transport/PostmarkApiTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ private function getPayload(Email $email, Envelope $envelope): array
8484

8585
$payload['Headers'][] = [
8686
'Name' => $name,
87-
'Value' => $header->toString(),
87+
'Value' => $header->getBodyAsString(),
8888
];
8989
}
9090

0 commit comments

Comments
 (0)