From 38300a2145dae325a90333e2728044f996ea014a Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Thu, 28 Sep 2017 16:06:49 +0200 Subject: [PATCH] Add imap_fetchheader() functionality --- src/Message.php | 15 +++++++++++++++ tests/MessageTest.php | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/Message.php b/src/Message.php index cc4a1484..f45eed14 100644 --- a/src/Message.php +++ b/src/Message.php @@ -15,6 +15,7 @@ class Message extends Message\Part { private $headers; + private $rawHeaders; private $attachments; /** @@ -235,6 +236,20 @@ public function getHeaders(): Message\Headers return $this->headers; } + /** + * Get raw message headers + * + * @return string + */ + public function getRawHeaders(): string + { + if (null === $this->rawHeaders) { + $this->rawHeaders = imap_fetchheader($this->stream, $this->messageNumber, \FT_UID); + } + + return $this->rawHeaders; + } + /** * Get body HTML * diff --git a/tests/MessageTest.php b/tests/MessageTest.php index 8d32b8ba..43429841 100644 --- a/tests/MessageTest.php +++ b/tests/MessageTest.php @@ -313,4 +313,21 @@ public function provideDateCases(): array ['2006-01-04T21:47:28+0000', 'WED 04, JAN 2006 21:47:28'], ]; } + + public function testRawHeaders() + { + $headers = 'From: from@there.com' . "\r\n" + . 'To: to@here.com' . "\n" + . "\r\n" + ; + $originalMessage = $headers . 'Content' . "\n"; + + $this->mailbox->addMessage($originalMessage); + $message = $this->mailbox->getMessage(1); + + $expectedHeaders = preg_split('/\R/u', $headers); + $expectedHeaders = implode("\r\n", $expectedHeaders); + + $this->assertSame($expectedHeaders, $message->getRawHeaders()); + } }