[Mailer] Mailjet - properly format Cc and Bcc for API

This commit is contained in:
Thibaut Cheymol 2020-08-19 21:22:56 +02:00
parent fc2133087d
commit e038605dca

View File

@ -85,25 +85,17 @@ class MailjetApiTransport extends AbstractApiTransport
[$attachments, $inlines, $html] = $this->prepareAttachments($email, $html); [$attachments, $inlines, $html] = $this->prepareAttachments($email, $html);
$message = [ $message = [
'From' => [ 'From' => $this->formatAddress($envelope->getSender()),
'Email' => $envelope->getSender()->getAddress(), 'To' => $this->formatAddresses($this->getRecipients($email, $envelope)),
'Name' => $envelope->getSender()->getName(),
],
'To' => array_map(function (Address $recipient) {
return [
'Email' => $recipient->getAddress(),
'Name' => $recipient->getName(),
];
}, $this->getRecipients($email, $envelope)),
'Subject' => $email->getSubject(), 'Subject' => $email->getSubject(),
'Attachments' => $attachments, 'Attachments' => $attachments,
'InlinedAttachments' => $inlines, 'InlinedAttachments' => $inlines,
]; ];
if ($emails = $email->getCc()) { if ($emails = $email->getCc()) {
$message['Cc'] = implode(',', $this->stringifyAddresses($emails)); $message['Cc'] = $this->formatAddresses($emails);
} }
if ($emails = $email->getBcc()) { if ($emails = $email->getBcc()) {
$message['Bcc'] = implode(',', $this->stringifyAddresses($emails)); $message['Bcc'] = $this->formatAddresses($emails);
} }
if ($email->getTextBody()) { if ($email->getTextBody()) {
$message['TextPart'] = $email->getTextBody(); $message['TextPart'] = $email->getTextBody();
@ -117,6 +109,19 @@ class MailjetApiTransport extends AbstractApiTransport
]; ];
} }
private function formatAddresses(array $addresses): array
{
return array_map([$this, 'formatAddress'], $addresses);
}
private function formatAddress(Address $address): array
{
return [
'Email' => $address->getAddress(),
'Name' => $address->getName(),
];
}
private function prepareAttachments(Email $email, ?string $html): array private function prepareAttachments(Email $email, ?string $html): array
{ {
$attachments = $inlines = []; $attachments = $inlines = [];