Skip to content
/ mime Public

Commit 92d6b9b

Browse files
committedMay 29, 2024
Merge branch '7.0' into 7.1
* 7.0: Revert "fix PHP 7 compatibility" fix PHP 7 compatibility [Mime] Fixed `Mime\Message::ensureValidity()` when a required header is set, but has an empty body
2 parents b796381 + 51d6a7f commit 92d6b9b

File tree

2 files changed

+69
-2
lines changed

2 files changed

+69
-2
lines changed
 

‎Message.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,11 @@ public function toIterable(): iterable
124124

125125
public function ensureValidity(): void
126126
{
127-
if (!$this->headers->has('To') && !$this->headers->has('Cc') && !$this->headers->has('Bcc')) {
127+
if (!$this->headers->get('To')?->getBody() && !$this->headers->get('Cc')?->getBody() && !$this->headers->get('Bcc')?->getBody()) {
128128
throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.');
129129
}
130130

131-
if (!$this->headers->has('From') && !$this->headers->has('Sender')) {
131+
if (!$this->headers->get('From')?->getBody() && !$this->headers->get('Sender')?->getBody()) {
132132
throw new LogicException('An email must have a "From" or a "Sender" header.');
133133
}
134134

‎Tests/MessageTest.php

+67
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,71 @@ public function testSymfonySerialize()
276276
$serialized = $serializer->serialize($e, 'json');
277277
$this->assertStringMatchesFormat($expectedJson, json_encode(json_decode($serialized), \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES));
278278
}
279+
280+
/**
281+
* @dataProvider ensureValidityProvider
282+
*/
283+
public function testEnsureValidity(array $headers, ?string $exceptionClass, ?string $exceptionMessage)
284+
{
285+
if ($exceptionClass) {
286+
$this->expectException($exceptionClass);
287+
$this->expectExceptionMessage($exceptionMessage);
288+
} else {
289+
$this->expectNotToPerformAssertions();
290+
}
291+
292+
$m = new Message();
293+
foreach ($headers as $headerName => $headerValue) {
294+
$m->getHeaders()->addMailboxListHeader($headerName, $headerValue);
295+
}
296+
$m->ensureValidity();
297+
}
298+
299+
public function ensureValidityProvider()
300+
{
301+
return [
302+
'Valid address fields' => [
303+
[
304+
'To' => ['dummy@symfony.com'],
305+
'From' => ['test@symfony.com'],
306+
],
307+
null,
308+
null,
309+
],
310+
311+
'No destination address fields' => [
312+
[
313+
'From' => ['test@symfony.com'],
314+
],
315+
LogicException::class,
316+
'An email must have a "To", "Cc", or "Bcc" header.',
317+
],
318+
319+
'Empty destination address fields' => [
320+
[
321+
'To' => [],
322+
'From' => ['test@symfony.com'],
323+
],
324+
LogicException::class,
325+
'An email must have a "To", "Cc", or "Bcc" header.',
326+
],
327+
328+
'No originator fields' => [
329+
[
330+
'To' => ['dummy@symfony.com'],
331+
],
332+
LogicException::class,
333+
'An email must have a "From" or a "Sender" header.',
334+
],
335+
336+
'Empty originator fields' => [
337+
[
338+
'To' => ['dummy@symfony.com'],
339+
'From' => [],
340+
],
341+
LogicException::class,
342+
'An email must have a "From" or a "Sender" header.',
343+
],
344+
];
345+
}
279346
}

0 commit comments

Comments
 (0)
Please sign in to comment.