Skip to content

Commit

Permalink
Merge pull request #104 from rudiedirkx/sf-address-101
Browse files Browse the repository at this point in the history
Convert symfony Addresses to jsonable email adresses for the .html preview
  • Loading branch information
freekmurze committed Apr 8, 2024
2 parents 5b91e3f + f88899e commit ec69949
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions src/PreviewMailTransport.php
Expand Up @@ -11,6 +11,7 @@
use Symfony\Component\Finder\SplFileInfo;
use Symfony\Component\Mailer\SentMessage;
use Symfony\Component\Mailer\Transport\AbstractTransport;
use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\MessageConverter;

class PreviewMailTransport extends AbstractTransport
Expand Down Expand Up @@ -75,7 +76,7 @@ protected function getPreviewFilePath(SentMessage $message): string
{
$to = '';

/** @var \Symfony\Component\Mime\Address $toAddress */
/** @var Address $toAddress */
if ($toAddress = ($message->getOriginalMessage()->getTo()[0] ?? null)) {
$to = str_replace(['@', '.'], ['_at_', '_'], $toAddress->getAddress()) . '_';
}
Expand All @@ -90,15 +91,22 @@ protected function getMessageInfo(SentMessage $message): string
{
return sprintf(
"<!--\nFrom:%s, \nto:%s, \nreply-to:%s, \ncc:%s, \nbcc:%s, \nsubject:%s\n-->\n",
json_encode($message->getOriginalMessage()->getFrom()),
json_encode($message->getOriginalMessage()->getTo()),
json_encode($message->getOriginalMessage()->getReplyTo()),
json_encode($message->getOriginalMessage()->getCc()),
json_encode($message->getOriginalMessage()->getBcc()),
json_encode($this->extractAddresses($message->getOriginalMessage()->getFrom())),
json_encode($this->extractAddresses($message->getOriginalMessage()->getTo())),
json_encode($this->extractAddresses($message->getOriginalMessage()->getReplyTo())),
json_encode($this->extractAddresses($message->getOriginalMessage()->getCc())),
json_encode($this->extractAddresses($message->getOriginalMessage()->getBcc())),
$message->getOriginalMessage()->getSubject(),
);
}

protected function extractAddresses(array $addresses): array
{
return array_map(function (Address $address) {
return $address->getAddress();
}, $addresses);
}

protected function ensureEmailPreviewDirectoryExists(): self
{
if ($this->filesystem->exists($this->storagePath())) {
Expand Down

0 comments on commit ec69949

Please sign in to comment.