Skip to content

Commit f80536a

Browse files
authored
fix(mailer): small tweaks and bugfixes (#1408)
1 parent 3f5f31e commit f80536a

File tree

18 files changed

+125
-103
lines changed

18 files changed

+125
-103
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Stringable;
66

7-
final readonly class Address implements Stringable
7+
final readonly class EmailAddress implements Stringable
88
{
99
public function __construct(
1010
public string $email,

packages/mail/src/EmailToSymfonyEmailMapper.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function map(mixed $from, mixed $to): SymfonyEmail
4343
}
4444

4545
if ($this->mailerConfig instanceof ProvidesDefaultSender && $this->mailerConfig->defaultSender) {
46-
$symfonyEmail->from($this->mailerConfig->defaultSender);
46+
$symfonyEmail->from(...$this->convertAddresses($this->mailerConfig->defaultSender));
4747
}
4848

4949
if ($email->envelope->from) {
@@ -83,7 +83,7 @@ public function map(mixed $from, mixed $to): SymfonyEmail
8383
// Set HTML content
8484
$html = match (true) {
8585
$email->html instanceof View => $this->viewRenderer->render($email->html),
86-
str_ends_with($email->html, '.view.html') => $this->viewRenderer->render($email->html),
86+
str_ends_with($email->html, '.view.php') => $this->viewRenderer->render($email->html),
8787
default => $email->html,
8888
};
8989

@@ -95,7 +95,7 @@ public function map(mixed $from, mixed $to): SymfonyEmail
9595
if ($email instanceof HasTextContent) {
9696
$text = match (true) {
9797
$email->text instanceof View => $this->viewRenderer->render($email->text),
98-
str_ends_with($email->text ?? '', '.view.html') => $this->viewRenderer->render($email->text),
98+
str_ends_with($email->text ?? '', '.view.php') => $this->viewRenderer->render($email->text),
9999
default => $email->text,
100100
};
101101
}
@@ -116,12 +116,12 @@ public function map(mixed $from, mixed $to): SymfonyEmail
116116
return $symfonyEmail;
117117
}
118118

119-
private function convertAddresses(null|string|array|Address $addresses): array
119+
private function convertAddresses(null|string|array|EmailAddress $addresses): array
120120
{
121121
return arr($addresses)
122-
->map(fn (string|Address|SymfonyAddress $address) => match (true) {
122+
->map(fn (string|EmailAddress|SymfonyAddress $address) => match (true) {
123123
$address instanceof SymfonyAddress => $address,
124-
$address instanceof Address => new SymfonyAddress($address->email, $address->name),
124+
$address instanceof EmailAddress => new SymfonyAddress($address->email, $address->name ?? ''),
125125
is_string($address) => SymfonyAddress::create($address),
126126
default => null,
127127
})

packages/mail/src/Envelope.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ final class Envelope
99
{
1010
public function __construct(
1111
public ?string $subject,
12-
public null|string|array|Address $to,
13-
public null|string|array|Address $from = null,
14-
public null|string|array|Address $cc = null,
15-
public null|string|array|Address $bcc = null,
16-
public null|string|array|Address $replyTo = null,
12+
public null|string|array|EmailAddress $to,
13+
public null|string|array|EmailAddress $from = null,
14+
public null|string|array|EmailAddress $cc = null,
15+
public null|string|array|EmailAddress $bcc = null,
16+
public null|string|array|EmailAddress $replyTo = null,
1717
public array $headers = [],
1818
public EmailPriority $priority = EmailPriority::NORMAL,
1919
) {}

packages/mail/src/GenericEmail.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ final class GenericEmail implements Email, HasTextContent, HasAttachments
2121

2222
public function __construct(
2323
public ?string $subject,
24-
public null|string|array|Address $to,
24+
public null|string|array|EmailAddress $to,
2525
public string|View $html,
2626
public string|View|null $text = null,
27-
public null|string|array|Address $from = null,
28-
public null|string|array|Address $cc = null,
29-
public null|string|array|Address $bcc = null,
30-
public null|string|array|Address $replyTo = null,
27+
public null|string|array|EmailAddress $from = null,
28+
public null|string|array|EmailAddress $cc = null,
29+
public null|string|array|EmailAddress $bcc = null,
30+
public null|string|array|EmailAddress $replyTo = null,
3131
public array $headers = [],
3232
public EmailPriority $priority = EmailPriority::NORMAL,
3333
public array $attachments = [],

packages/mail/src/Testing/MailTester.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use Symfony\Component\Mime\Address as SymfonyAddress;
1010
use Symfony\Component\Mime\Email as SymfonyEmail;
1111
use Symfony\Component\Mime\Part\DataPart;
12-
use Tempest\Mail\Address;
1312
use Tempest\Mail\Attachment;
1413
use Tempest\Mail\Email;
14+
use Tempest\Mail\EmailAddress;
1515
use Tempest\Mail\EmailPriority;
1616
use Tempest\Mail\EmailToSymfonyEmailMapper;
1717
use Tempest\Support\Arr;
@@ -94,14 +94,14 @@ public function assertNotSent(string $email): self
9494
public array $from {
9595
get => Arr\map_iterable(
9696
array: $this->sentSymfonyEmail->getFrom(),
97-
map: fn (SymfonyAddress $address) => new Address($address->getAddress(), $address->getName()),
97+
map: fn (SymfonyAddress $address) => new EmailAddress($address->getAddress(), $address->getName()),
9898
);
9999
}
100100

101101
public array $to {
102102
get => Arr\map_iterable(
103103
array: $this->sentSymfonyEmail->getTo(),
104-
map: fn (SymfonyAddress $address) => new Address($address->getAddress(), $address->getName()),
104+
map: fn (SymfonyAddress $address) => new EmailAddress($address->getAddress(), $address->getName()),
105105
);
106106
}
107107

@@ -413,7 +413,7 @@ public function assertHasHeader(string $header, ?string $value = null): self
413413
return $this;
414414
}
415415

416-
private function assertAddressListContains(null|string|array|Address $haystack, string|array $needles, string $message): self
416+
private function assertAddressListContains(null|string|array|EmailAddress $haystack, string|array $needles, string $message): self
417417
{
418418
$needles = Arr\wrap($needles);
419419
$haystack = $this->convertAddresses($haystack);
@@ -429,7 +429,7 @@ private function assertAddressListContains(null|string|array|Address $haystack,
429429
return $this;
430430
}
431431

432-
private function assertAddressListDoesNotContain(null|string|array|Address $haystack, string|array $needles, string $message): self
432+
private function assertAddressListDoesNotContain(null|string|array|EmailAddress $haystack, string|array $needles, string $message): self
433433
{
434434
$needles = Arr\wrap($needles);
435435
$haystack = $this->convertAddresses($haystack);
@@ -445,13 +445,13 @@ private function assertAddressListDoesNotContain(null|string|array|Address $hays
445445
return $this;
446446
}
447447

448-
private function convertAddresses(null|string|array|Address $addresses): array
448+
private function convertAddresses(null|string|array|EmailAddress $addresses): array
449449
{
450450
return arr($addresses)
451-
->map(function (string|Address|SymfonyAddress $address) {
451+
->map(function (string|EmailAddress|SymfonyAddress $address) {
452452
return match (true) {
453453
$address instanceof SymfonyAddress => $address->getAddress(),
454-
$address instanceof Address => $address->email,
454+
$address instanceof EmailAddress => $address->email,
455455
is_string($address) => $address,
456456
default => null,
457457
};

packages/mail/src/Transports/NullMailerConfig.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Symfony\Component\Mailer\Transport\NullTransport;
66
use Symfony\Component\Mailer\Transport\TransportInterface;
7-
use Tempest\Mail\Address;
7+
use Tempest\Mail\EmailAddress;
88
use Tempest\Mail\MailerConfig;
99

1010
/**
@@ -15,7 +15,7 @@ final class NullMailerConfig implements MailerConfig, ProvidesDefaultSender
1515
public string $transport = NullTransport::class;
1616

1717
public function __construct(
18-
public null|string|Address $defaultSender = null,
18+
public null|string|EmailAddress $defaultSender = null,
1919
) {}
2020

2121
public function createTransport(): TransportInterface

packages/mail/src/Transports/Postmark/PostmarkConfig.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkTransportFactory;
88
use Symfony\Component\Mailer\Transport\Dsn;
99
use Symfony\Component\Mailer\Transport\TransportInterface;
10-
use Tempest\Mail\Address;
10+
use Tempest\Mail\EmailAddress;
1111
use Tempest\Mail\MailerConfig;
1212
use Tempest\Mail\Transports\ProvidesDefaultSender;
1313

@@ -42,7 +42,7 @@ public function __construct(
4242
/**
4343
* Address from which emails are sent by default.
4444
*/
45-
public null|string|Address $defaultSender = null,
45+
public null|string|EmailAddress $defaultSender = null,
4646

4747
/**
4848
* Whether to use Postmark's API or SMTP server.

packages/mail/src/Transports/ProvidesDefaultSender.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
namespace Tempest\Mail\Transports;
44

5-
use Tempest\Mail\Address;
5+
use Tempest\Mail\EmailAddress;
66

77
interface ProvidesDefaultSender
88
{
99
/**
1010
* The default address from which emails will be sent.
1111
*/
12-
public null|string|Address $defaultSender {
12+
public null|string|EmailAddress $defaultSender {
1313
get;
1414
}
1515
}

packages/mail/src/Transports/RoundRobinMailerConfig.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Symfony\Component\Mailer\Transport\RoundRobinTransport;
66
use Symfony\Component\Mailer\Transport\TransportInterface;
77
use Tempest\DateTime\Duration;
8-
use Tempest\Mail\Address;
8+
use Tempest\Mail\EmailAddress;
99
use Tempest\Mail\MailerConfig;
1010
use Tempest\Support\Arr;
1111
use UnitEnum;

packages/mail/src/Transports/Ses/SesMailerConfig.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\Mailer\Bridge\Amazon\Transport\SesTransportFactory;
88
use Symfony\Component\Mailer\Transport\Dsn;
99
use Symfony\Component\Mailer\Transport\TransportInterface;
10-
use Tempest\Mail\Address;
10+
use Tempest\Mail\EmailAddress;
1111
use Tempest\Mail\MailerConfig;
1212
use Tempest\Mail\Transports\ProvidesDefaultSender;
1313

@@ -52,7 +52,7 @@ public function __construct(
5252
/**
5353
* Address from which emails are sent by default.
5454
*/
55-
public null|string|Address $defaultSender = null,
55+
public null|string|EmailAddress $defaultSender = null,
5656

5757
/**
5858
* Whether to use Amazon SES's API or async HTTP transport.

0 commit comments

Comments
 (0)