From 5b34e01931fd37fc430c84b5ba0da51babde7efc Mon Sep 17 00:00:00 2001 From: Steve Bauman Date: Sun, 28 Dec 2025 14:22:19 -0500 Subject: [PATCH 1/2] Fix serialization of body and head properties --- src/Message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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']; } /** From 69a7376d55088171b8512384d061a7b8edcd52db Mon Sep 17 00:00:00 2001 From: Steve Bauman Date: Sun, 28 Dec 2025 14:22:54 -0500 Subject: [PATCH 2/2] Add test --- tests/Unit/MessageTest.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) 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); +});