8000 [Sendgrid-Mailer] Fixed envelope recipients on sendgridApiTransport · symfony/symfony@c4e5131 · GitHub
[go: up one dir, main page]

Skip to content

Commit c4e5131

Browse files
[Sendgrid-Mailer] Fixed envelope recipients on sendgridApiTransport
Fixes #37870 The SendgridApiTransport was not using the envelope to get the recipients, so overriding the recipients with the EnvelopeListener was not working.
1 parent 7f7b447 commit c4e5131

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,34 @@ public function testReplyTo()
192192
$this->assertArrayHasKey('email', $payload['reply_to']);
193193
$this->assertSame($replyTo, $payload['reply_to']['email']);
194194
}
195+
196+
public function testEnvelopeSenderAndRecipients()
197+
{
198+
$from = 'from@example.com';
199+
$to = 'to@example.com';
200+
$envelopeFrom = 'envelopefrom@example.com';
201+
$envelopeTo = 'envelopeto@example.com';
202+
$email = new Email();
203+
$email->from($from)
204+
->to($to)
205+
->cc('cc@example.com')
206+
->bcc('bcc@example.com')
207+
->text('content');
208+
$envelope = new Envelope(new Address($envelopeFrom), [new Address($envelopeTo)]);
209+
210+
$transport = new SendgridApiTransport('ACCESS_KEY');
211+
$method = new \ReflectionMethod(SendgridApiTransport::class, 'getPayload');
212+
$method->setAccessible(true);
213+
$payload = $method->invoke($transport, $email, $envelope);
214+
215+
$this->assertArrayHasKey('from', $payload);
216+
$this->assertArrayHasKey('email', $payload['from']);
217+
$this->assertSame($envelopeFrom, $payload['from']['email']);
218+
219+
$this->assertArrayHasKey('personalizations', $payload);
220+
$this->assertArrayHasKey('to', $payload['personalizations'][0]);
221+
$this->assertArrayHasKey('email', $payload['personalizations'][0]['to'][0]);
222+
$this->assertCount(1, $payload['personalizations'][0]['to']);
223+
$this->assertSame($envelopeTo, $payload['personalizations'][0]['to'][0]['email']);
224+
}
195225
}

src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.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

8686
$personalization = [
87-
'to' => array_map($addressStringifier, $email->getTo()),
87+
'to' => array_map($addressStringifier, $this->getRecipients($email, $envelope)),
8888
'subject' => $email->getSubject(),
8989
];
9090
if ($emails = array_map($addressStringifier, $email->getCc())) {

0 commit comments

Comments
 (0)
0