Browse Source

Include message body in serialized Message.

Closes #15290.
ADmad 5 years ago
parent
commit
becc2e91be
2 changed files with 25 additions and 1 deletions
  1. 2 1
      src/Mailer/Message.php
  2. 23 0
      tests/TestCase/Mailer/MessageTest.php

+ 2 - 1
src/Mailer/Message.php

@@ -1853,6 +1853,7 @@ class Message implements JsonSerializable, Serializable
             'to', 'from', 'sender', 'replyTo', 'cc', 'bcc', 'subject',
             'returnPath', 'readReceipt', 'emailFormat', 'emailPattern', 'domain',
             'attachments', 'messageId', 'headers', 'appCharset', 'charset', 'headerCharset',
+            'textMessage', 'htmlMessage',
         ];
 
         $array = [];
@@ -1905,7 +1906,7 @@ class Message implements JsonSerializable, Serializable
     }
 
     /**
-     * Unserializes the Email object.
+     * Unserializes the Message object.
      *
      * @param string $data Serialized string.
      * @return void

+ 23 - 0
tests/TestCase/Mailer/MessageTest.php

@@ -1391,4 +1391,27 @@ HTML;
             );
         }
     }
+
+    public function testSerialization()
+    {
+        $message = new Message();
+
+        $message
+            ->setSubject('I haz Cake')
+            ->setEmailFormat(Message::MESSAGE_BOTH)
+            ->setBody([
+                Message::MESSAGE_TEXT => 'text message',
+                Message::MESSAGE_HTML => '<strong>html message</strong>',
+            ]);
+
+        $string = serialize($message);
+        $this->assertStringContainsString('text message', $string);
+
+        /** @var \Cake\Mailer\Message $message */
+        $message = unserialize($string);
+        $this->assertSame('I haz Cake', $message->getSubject());
+        $body = $message->getBodyString();
+        $this->assertStringContainsString('text message', $body);
+        $this->assertStringContainsString('<strong>html message</strong>', $body);
+    }
 }