diff --git a/src/Header/ReturnPath.php b/src/Header/ReturnPath.php index bd8b068..d0f7ec9 100644 --- a/src/Header/ReturnPath.php +++ b/src/Header/ReturnPath.php @@ -9,14 +9,14 @@ final class ReturnPath implements HeaderInterface { /** - * @var EmailAddress + * @var ?EmailAddress */ private $reversePath; /** - * @param EmailAddress $reversePath + * @param ?EmailAddress $reversePath */ - public function __construct(EmailAddress $reversePath) + public function __construct(?EmailAddress $reversePath = null) { $this->reversePath = $reversePath; } @@ -34,6 +34,10 @@ public function getName(): HeaderName */ public function getValue(): HeaderValue { - return HeaderValue::fromEncodedString((string)$this->reversePath); + if ($this->reversePath === null) { + return new HeaderValue('<>'); + } + + return HeaderValue::fromEncodedString('<' . $this->reversePath . '>'); } } diff --git a/test/Unit/Header/ReturnPathTest.php b/test/Unit/Header/ReturnPathTest.php index e57b4fe..ca1516c 100644 --- a/test/Unit/Header/ReturnPathTest.php +++ b/test/Unit/Header/ReturnPathTest.php @@ -15,7 +15,7 @@ final class ReturnPathTest extends AbstractTestCase */ public function it_produces_correct_values($recipientEmail, $headerName, $headerValue): void { - $header = new ReturnPath(new EmailAddress($recipientEmail)); + $header = new ReturnPath($recipientEmail); $this->assertEquals($headerName, (string)$header->getName()); $this->assertEquals($headerValue, (string)$header->getValue()); } @@ -26,7 +26,8 @@ public function it_produces_correct_values($recipientEmail, $headerName, $header public function provideValues(): array { return [ - ['me@example.com', 'Return-Path', 'me@example.com'], + [new EmailAddress('me@example.com'), 'Return-Path', ''], + [null, 'Return-Path', '<>'], ]; } }