Add methods to update or clear custom headers by name.

This commit is contained in:
Frank Forte 2023-11-22 11:35:33 -05:00
parent 9952101e44
commit 174653aa27
2 changed files with 59 additions and 0 deletions

View File

@ -4058,6 +4058,30 @@ class PHPMailer
$this->CustomHeader = [];
}
/**
* Clear a specific custom header.
*/
public function clearCustomHeader($name)
{
foreach ($this->CustomHeader as $k => $pair) {
if ($pair[0] == $name) {
unset($this->CustomHeader[$k]);
}
}
}
/**
* Replace a custom header.
*/
public function replaceCustomHeader($name, $value)
{
foreach ($this->CustomHeader as $k => $pair) {
if ($pair[0] == $name) {
$this->CustomHeader[$k] = [$name, $value];
}
}
}
/**
* Add an error message to the error container.
*

View File

@ -190,6 +190,23 @@ final class CustomHeaderTest extends TestCase
];
}
/**
* Test removing previously set custom header.
*
* @covers \PHPMailer\PHPMailer\PHPMailer::clearCustomHeader
*/
public function testClearCustomHeader()
{
$this->Mail->addCustomHeader('foo', 'bar');
self::assertSame([['foo', 'bar']], $this->Mail->getCustomHeaders());
$this->Mail->clearCustomHeader('foo');
$cleared = $this->Mail->getCustomHeaders();
self::assertIsArray($cleared);
self::assertEmpty($cleared);
}
/**
* Test removing previously set custom headers.
*
@ -222,4 +239,22 @@ final class CustomHeaderTest extends TestCase
$mail = new PHPMailer(true);
$mail->addCustomHeader('SomeHeader', "Some\n Value");
}
/**
* Test replacing a previously set custom header.
*
* @covers \PHPMailer\PHPMailer\PHPMailer::replaceCustomHeader
*/
public function testReplaceCustomHeader()
{
$this->Mail->addCustomHeader('foo', 'bar');
$this->Mail->replaceCustomHeader('foo', 'baz');
// Test retrieving the custom header(s) and verify the updated value is seet.
self::assertSame(
[['foo', 'baz']],
$this->Mail->getCustomHeaders(),
'Custom header does not contain expected update'
);
}
}