diff --git a/src/Message.php b/src/Message.php index 0e6af11..b27fff1 100644 --- a/src/Message.php +++ b/src/Message.php @@ -31,7 +31,7 @@ public function __construct( public function __sleep(): array { // We don't want to serialize the parsed message. - return ['folder', 'uid', 'flags', 'headers', 'contents', 'size']; + return ['folder', 'uid', 'flags', 'head', 'body', 'size']; } /** diff --git a/tests/Unit/MessageTest.php b/tests/Unit/MessageTest.php index ed4b9d5..9832e8c 100644 --- a/tests/Unit/MessageTest.php +++ b/tests/Unit/MessageTest.php @@ -145,3 +145,35 @@ // Different folder expect($message1->is($message4))->toBeFalse(); }); + +test('it serializes and unserializes the message correctly', function () { + $mailbox = Mailbox::make([ + 'username' => 'foo', + 'password' => 'bar', + ]); + + $mailbox->connect(ImapConnection::fake([ + '* OK Welcome to IMAP', + 'TAG1 OK Logged in', + ])); + + $folder = new Folder($mailbox, 'INBOX', [], '/'); + + $originalMessage = new Message( + $folder, + 123, + ['\\Seen', '\\Flagged'], + 'From: test@example.com', + 'This is the message body content', + 1024 + ); + + $serialized = serialize($originalMessage); + $unserializedMessage = unserialize($serialized); + + expect($unserializedMessage->uid())->toBe(123); + expect($unserializedMessage->flags())->toBe(['\\Seen', '\\Flagged']); + expect($unserializedMessage->head())->toBe('From: test@example.com'); + expect($unserializedMessage->body())->toBe('This is the message body content'); + expect($unserializedMessage->size())->toBe(1024); +});