Skip to content

Commit 8a109e0

Browse files
authored
Merge pull request #143 from DirectoryTree/fix-message-serialization
Fix message serialization of head and body properties on `Message`
2 parents 78b2f38 + 69a7376 commit 8a109e0

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/Message.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public function __construct(
3131
public function __sleep(): array
3232
{
3333
// We don't want to serialize the parsed message.
34-
return ['folder', 'uid', 'flags', 'headers', 'contents', 'size'];
34+
return ['folder', 'uid', 'flags', 'head', 'body', 'size'];
3535
}
3636

3737
/**

tests/Unit/MessageTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,35 @@
145145
// Different folder
146146
expect($message1->is($message4))->toBeFalse();
147147
});
148+
149+
test('it serializes and unserializes the message correctly', function () {
150+
$mailbox = Mailbox::make([
151+
'username' => 'foo',
152+
'password' => 'bar',
153+
]);
154+
155+
$mailbox->connect(ImapConnection::fake([
156+
'* OK Welcome to IMAP',
157+
'TAG1 OK Logged in',
158+
]));
159+
160+
$folder = new Folder($mailbox, 'INBOX', [], '/');
161+
162+
$originalMessage = new Message(
163+
$folder,
164+
123,
165+
['\\Seen', '\\Flagged'],
166+
167+
'This is the message body content',
168+
1024
169+
);
170+
171+
$serialized = serialize($originalMessage);
172+
$unserializedMessage = unserialize($serialized);
173+
174+
expect($unserializedMessage->uid())->toBe(123);
175+
expect($unserializedMessage->flags())->toBe(['\\Seen', '\\Flagged']);
176+
expect($unserializedMessage->head())->toBe('From: [email protected]');
177+
expect($unserializedMessage->body())->toBe('This is the message body content');
178+
expect($unserializedMessage->size())->toBe(1024);
179+
});

0 commit comments

Comments
 (0)