diff --git a/src/MIME/MimeHeader.php b/src/MIME/MimeHeader.php index 4ea239b..70f2738 100644 --- a/src/MIME/MimeHeader.php +++ b/src/MIME/MimeHeader.php @@ -183,6 +183,7 @@ class MimeHeader { // Encode non-7bit body. If body is 7bit, mimeHeaderEncode() does nothing. $body = static::mimeHeaderEncode($field['body'], strlen($field['name'])); $encoded = $body != $field['body']; + $field_string = "{$field['name']}: $body"; // Fold to match 78 char length limit, and append. The encoding includes // folding, so only do it for unencoded body. The \h matches whitespace @@ -191,7 +192,6 @@ class MimeHeader { $field_string = !$encoded ? preg_replace('/(.{0,78})(\h|$)/', "\\1\n\\2", $field_string) : $field_string; $header[] = trim($field_string); } - return implode("\n", $header); } diff --git a/tests/src/Kernel/ModeratorForwardTest.php b/tests/src/Kernel/ModeratorForwardTest.php index 39028a5..d5e8414 100644 --- a/tests/src/Kernel/ModeratorForwardTest.php +++ b/tests/src/Kernel/ModeratorForwardTest.php @@ -172,7 +172,7 @@ class ModeratorForwardTest extends KernelTestBase { // Extract the time from original message and append it. $received_header = "Received: by localhost via inmail with test_fetcher " . $deliverer->id() . " id ;" . substr($forward['received'], strpos($forward['received'], ';')+1) . "\n"; // Wrap the received header to 78 characters. - $expected_headers = $forward_header . $received_header . $expected_headers; + $expected_headers = $forward_header . wordwrap($received_header, 78, "\n ") . $expected_headers; // Wrap to 78 characters to match original message. $this->assertEqual($forward['raw_headers']->toString(), $expected_headers, 'Forwarded message headers have the correct changes.'); diff --git a/tests/src/Unit/MIME/MimeDSNEntityTest.php b/tests/src/Unit/MIME/MimeDSNEntityTest.php index 582bb49..403a3ee 100644 --- a/tests/src/Unit/MIME/MimeDSNEntityTest.php +++ b/tests/src/Unit/MIME/MimeDSNEntityTest.php @@ -93,7 +93,9 @@ class MimeDSNEntityTest extends UnitTestCase { protected static function getMessageHeader() { return new MimeHeader([ ['name' => 'Content-type', 'body' => 'multipart/report; report-type=delivery-status; boundary="boundary"'], - ]); + ], + 'Content-type: multipart/report; report-type=delivery-status; boundary="boundary"' + ); } /** @@ -159,7 +161,9 @@ Subject: My very urgent message protected static function getStatusPartHeader() { return new MimeHeader([ ['name' => 'Content-Type', 'body' => 'message/delivery-status'], - ]); + ], + 'Content-Type: message/delivery-status' + ); } /** @@ -185,7 +189,9 @@ Subject: My very urgent message protected static function getPerMessageFields() { return new MimeHeader([ ['name' => 'Reporting-MTA', 'body' => 'dns; example.com'], - ]); + ], + 'Reporting-MTA: dns; example.com' + ); } /** @@ -196,7 +202,9 @@ Subject: My very urgent message ['name' => 'Final-Recipient', 'body' => 'rfc822; user@example.org'], ['name' => 'Action', 'body' => 'failed'], ['name' => 'Status', 'body' => '5.0.0'], - ]); + ], + "Final-Recipient: rfc822; user@example.org\nAction: failed\nStatus: 5.0.0" + ); } /** @@ -212,7 +220,9 @@ Subject: My very urgent message protected static function getOriginalPartHeader() { return new MimeHeader([ ['name' => 'Content-Type', 'body' => 'message/rfc822'], - ]); + ], + 'Content-Type: message/rfc822' + ); } /** diff --git a/tests/src/Unit/MIME/MimeMultipartEntityTest.php b/tests/src/Unit/MIME/MimeMultipartEntityTest.php index 8507bdc..0c03f93 100644 --- a/tests/src/Unit/MIME/MimeMultipartEntityTest.php +++ b/tests/src/Unit/MIME/MimeMultipartEntityTest.php @@ -132,7 +132,11 @@ class MimeMultipartEntityTest extends UnitTestCase { ['name' => 'Subject', 'body' => 'Sample message'], ['name' => 'MIME-Version', 'body' => '1.0'], ['name' => 'Content-type', 'body' => 'multipart/mixed; boundary="simple boundary"'], - ]); + ], + "From: Nathaniel Borenstein \nTo: Ned Freed \n" . + "Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)\nSubject: Sample message\n" . + "MIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\"simple boundary\"" + ); } /** @@ -179,7 +183,9 @@ This is the epilogue. It is also to be ignored. protected static function getSecondPartHeader() { return new MimeHeader([ ['name' => 'Content-type', 'body' => 'text/plain; charset=us-ascii'], - ]); + ], + 'Content-type: text/plain; charset=us-ascii' + ); } /**