[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);
$message = [
'From' => [
'Email' => $envelope->getSender()->getAddress(),
'Name' => $envelope->getSender()->getName(),
],
'To' => array_map(function (Address $recipient) {
return [
'Email' => $recipient->getAddress(),
'Name' => $recipient->getName(),
];
}, $this->getRecipients($email, $envelope)),
'From' => $this->formatAddress($envelope->getSender()),
'To' => $this->formatAddresses($this->getRecipients($email, $envelope)),
'Subject' => $email->getSubject(),
'Attachments' => $attachments,
'InlinedAttachments' => $inlines,
];
if ($emails = $email->getCc()) {
$message['Cc'] = implode(',', $this->stringifyAddresses($emails));
$message['Cc'] = $this->formatAddresses($emails);
}
if ($emails = $email->getBcc()) {
$message['Bcc'] = implode(',', $this->stringifyAddresses($emails));
$message['Bcc'] = $this->formatAddresses($emails);
}
if ($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
{
$attachments = $inlines = [];