Skip to content
Snippets Groups Projects
Verified Commit bc8de78f authored by Dave Long's avatar Dave Long
Browse files

Issue #3451611 by mfb, xjm, smustgrave, quietone: Fix the format=flowed;...

Issue #3451611 by mfb, xjm, smustgrave, quietone: Fix the format=flowed; delsp=yes encoding of email messages

(cherry picked from commit c29768f4)
parent b9c8018c
No related branches found
No related tags found
2 merge requests!11185Issue #3477324 by andypost, alexpott: Fix usage of str_getcsv() and fgetcsv() for PHP 8.4,!9944Issue #3483353: Consider making the createCopy config action optionally fail...
Pipeline #231036 passed with warnings
Pipeline: drupal

#231061

    Pipeline: drupal

    #231054

      Pipeline: drupal

      #231047

        +1
        ...@@ -311,7 +311,7 @@ protected static function wrapMailLine(&$line, $key, $values) { ...@@ -311,7 +311,7 @@ protected static function wrapMailLine(&$line, $key, $values) {
        } }
        if (!$line_is_mime_header) { if (!$line_is_mime_header) {
        // Use soft-breaks only for purely quoted or un-indented text. // Use soft-breaks only for purely quoted or un-indented text.
        $line = wordwrap($line, 77 - $values['length'], $values['soft'] ? " \n" : "\n"); $line = wordwrap($line, 77 - $values['length'], $values['soft'] ? " \n" : "\n");
        } }
        // Break really long words at the maximum width allowed. // Break really long words at the maximum width allowed.
        $line = wordwrap($line, 996 - $values['length'], $values['soft'] ? " \n" : "\n", TRUE); $line = wordwrap($line, 996 - $values['length'], $values['soft'] ? " \n" : "\n", TRUE);
        ......
        ...@@ -64,10 +64,8 @@ public function format(array $message) { ...@@ -64,10 +64,8 @@ public function format(array $message) {
        // Join the body array into one string. // Join the body array into one string.
        $message['body'] = implode("\n\n", $message['body']); $message['body'] = implode("\n\n", $message['body']);
        // Convert any HTML to plain-text. // Convert any HTML to plain text (which also wraps the mail body).
        $message['body'] = MailFormatHelper::htmlToText($message['body']); $message['body'] = MailFormatHelper::htmlToText($message['body']);
        // Wrap the mail body for sending.
        $message['body'] = MailFormatHelper::wrapMail($message['body']);
        return $message; return $message;
        } }
        ......
        ...@@ -98,11 +98,14 @@ public function __construct( ...@@ -98,11 +98,14 @@ public function __construct(
        } }
        public function format(array $message) { public function format(array $message) {
        // Convert any HTML to plain-text.
        foreach ($message['body'] as &$part) { foreach ($message['body'] as &$part) {
        // If the message contains HTML, convert it to plain text (which also
        // wraps the mail body).
        if ($part instanceof MarkupInterface) { if ($part instanceof MarkupInterface) {
        $part = MailFormatHelper::htmlToText($part); $part = MailFormatHelper::htmlToText($part);
        } }
        // If the message does not contain HTML, it still needs to be wrapped
        // properly.
        else { else {
        $part = MailFormatHelper::wrapMail($part); $part = MailFormatHelper::wrapMail($part);
        } }
        ......
        ...@@ -32,8 +32,11 @@ public function testWrapMail(): void { ...@@ -32,8 +32,11 @@ public function testWrapMail(): void {
        // Check that the body headers were not wrapped even though some exceeded // Check that the body headers were not wrapped even though some exceeded
        // 77 characters. // 77 characters.
        $this->assertEquals($headers_in_body, $processed_headers, 'Headers in the body are not wrapped.'); $this->assertEquals($headers_in_body, $processed_headers, 'Headers in the body are not wrapped.');
        // Check that the body text is wrapped. // Check that the body text is soft-wrapped according to the
        $this->assertEquals(wordwrap($body, 77, " \n"), $processed_body, 'Body text is wrapped.'); // "format=flowed; delsp=yes" encoding. When interpreting this encoding,
        // mail readers will delete a space at the end of the line; therefore an
        // extra trailing space should be present in the raw body (see RFC 3676).
        $this->assertEquals(wordwrap($body, 77, " \n"), $processed_body, 'Body text is soft-wrapped.');
        } }
        } }
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment