Skip to content

Commit 7dee6a4

Browse files
committed
bug #39954 [Mailer][Mime] Fix case-sensitive handling of header names (piku235)
This PR was squashed before being merged into the 5.2 branch. Discussion ---------- [Mailer][Mime] Fix case-sensitive handling of header names | Q | A | ------------- | --- | Branch? | 5.2 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #39953 | License | MIT | Doc PR | - Fixes case-sensitive handling of header names in "Mime" and "Mailer" component, more in the [ticket](symfony/symfony#39953). Commits ------- d563c846f6 [Mailer][Mime] Fix case-sensitive handling of header names
2 parents 37bade5 + 5d8d0a2 commit 7dee6a4

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

Header/Headers.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public function addParameterizedHeader(string $name, string $value, array $param
143143
*/
144144
public function addHeader(string $name, $argument, array $more = []): self
145145
{
146-
$parts = explode('\\', self::HEADER_CLASS_MAP[$name] ?? UnstructuredHeader::class);
146+
$parts = explode('\\', self::HEADER_CLASS_MAP[strtolower($name)] ?? UnstructuredHeader::class);
147147
$method = 'add'.ucfirst(array_pop($parts));
148148
if ('addUnstructuredHeader' === $method) {
149149
$method = 'addTextHeader';
@@ -217,7 +217,7 @@ public function remove(string $name): void
217217

218218
public static function isUniqueHeader(string $name): bool
219219
{
220-
return \in_array($name, self::UNIQUE_HEADERS, true);
220+
return \in_array(strtolower($name), self::UNIQUE_HEADERS, true);
221221
}
222222

223223
/**

Tests/Header/HeadersTest.php

+14
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,20 @@ public function testRemoveIsNotCaseSensitive()
239239
$this->assertFalse($headers->has('Message-ID'));
240240
}
241241

242+
public function testAddHeaderIsNotCaseSensitive()
243+
{
244+
$headers = new Headers();
245+
$headers->addHeader('From', ['from@example.com']);
246+
247+
$this->assertInstanceOf(MailboxListHeader::class, $headers->get('from'));
248+
$this->assertEquals([new Address('from@example.com')], $headers->get('from')->getBody());
249+
}
250+
251+
public function testIsUniqueHeaderIsNotCaseSensitive()
252+
{
253+
$this->assertTrue(Headers::isUniqueHeader('From'));
254+
}
255+
242256
public function testToStringJoinsHeadersTogether()
243257
{
244258
$headers = new Headers();

0 commit comments

Comments
 (0)