From 89198125236ded1c3da17a8f41d5fa3c9c37887e Mon Sep 17 00:00:00 2001 From: Lukasz Piernikarczyk Date: Wed, 8 Nov 2017 13:54:38 +0100 Subject: [PATCH] uid in appended message as return --- src/Mailbox.php | 16 ++++++++++------ src/MailboxInterface.php | 4 ++-- tests/MessageTest.php | 34 ++++++++++++++++++++++------------ 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/src/Mailbox.php b/src/Mailbox.php index 7725b596..e3c53290 100644 --- a/src/Mailbox.php +++ b/src/Mailbox.php @@ -128,7 +128,7 @@ public function setFlag(string $flag, $numbers): bool $numbers = \implode(',', $numbers); } - return \imap_setflag_full($this->resource->getStream(), (string) $numbers, $flag, \ST_UID); + return \imap_setflag_full($this->resource->getStream(), (string)$numbers, $flag, \ST_UID); } /** @@ -145,7 +145,7 @@ public function clearFlag(string $flag, $numbers): bool $numbers = \implode(',', $numbers); } - return \imap_clearflag_full($this->resource->getStream(), (string) $numbers, $flag, \ST_UID); + return \imap_clearflag_full($this->resource->getStream(), (string)$numbers, $flag, \ST_UID); } /** @@ -210,11 +210,14 @@ public function getIterator(): MessageIteratorInterface * * @param string $message * - * @return bool + * @return int sppended message UID */ - public function addMessage(string $message): bool + public function addMessage(string $message): int { - return \imap_append($this->resource->getStream(), $this->getFullEncodedName(), $message); + $status = $this->getStatus(SA_UIDNEXT); + if (\imap_append($this->resource->getStream(), $this->getFullEncodedName(), $message)) { + return $status->uidnext; + } } /** @@ -224,7 +227,8 @@ public function addMessage(string $message): bool */ public function getThread(): array { - \set_error_handler(function () {}); + \set_error_handler(function () { + }); $tree = \imap_thread($this->resource->getStream()); diff --git a/src/MailboxInterface.php b/src/MailboxInterface.php index 24c6e24b..9703b43d 100644 --- a/src/MailboxInterface.php +++ b/src/MailboxInterface.php @@ -105,9 +105,9 @@ public function getIterator(): MessageIteratorInterface; * * @param string $message * - * @return bool + * @return int */ - public function addMessage(string $message): bool; + public function addMessage(string $message): int; /** * Returns a tree of threaded message for the current Mailbox. diff --git a/tests/MessageTest.php b/tests/MessageTest.php index 8e8cd178..08e93f8d 100644 --- a/tests/MessageTest.php +++ b/tests/MessageTest.php @@ -7,6 +7,7 @@ use Ddeboer\Imap\Exception\InvalidDateHeaderException; use Ddeboer\Imap\Exception\MessageDoesNotExistException; use Ddeboer\Imap\Exception\UnsupportedCharsetException; +use Ddeboer\Imap\Mailbox; use Ddeboer\Imap\Message; use Ddeboer\Imap\Message\EmailAddress; use Ddeboer\Imap\Message\Parameters; @@ -39,20 +40,24 @@ final class MessageTest extends AbstractTest ]; private static $charsets = [ - 'ASCII' => '! "#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~', - 'GB18030' => " 、。〃々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〝〞〡〢〣〤〥〦〧〨〩〾一\u{200b}丁\u{200b}丂踰\u{200b}踱\u{200b}踲\u{200b}", - 'ISO-8859-6' => 'ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىي', - 'ISO-8859-7' => 'ΆΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ2ΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ', - 'SJIS' => '。「」、・ヲァィゥェォャュョッBーアイウエオカキクケコサシスセソCタチツテトナニヌネノハヒフヘホマDミムメモヤユヨラリルレロワン゙゚', - 'UTF-8' => '€✔', + 'ASCII' => '! "#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~', + 'GB18030' => " 、。〃々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〝〞〡〢〣〤〥〦〧〨〩〾一\u{200b}丁\u{200b}丂踰\u{200b}踱\u{200b}踲\u{200b}", + 'ISO-8859-6' => 'ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىي', + 'ISO-8859-7' => 'ΆΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ2ΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ', + 'SJIS' => '。「」、・ヲァィゥェォャュョッBーアイウエオカキクケコサシスセソCタチツテトナニヌネノハヒフヘホマDミムメモヤユヨラリルレロワン゙゚', + 'UTF-8' => '€✔', 'Windows-1251' => 'ЂЃѓЉЊЌЋЏђљњќћџЎўЈҐЁЄЇІіґёєјЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя', 'Windows-1252' => 'ƒŠŒŽšœžŸªºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ', ]; private static $iconvOnlyCharsets = [ - 'macintosh' => '†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈«»…ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ', + 'macintosh' => '†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈«»…ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ', 'Windows-1250' => 'ŚŤŹśťźˇ˘ŁĄŞŻ˛łąşĽ˝ľż', ]; + /** + * @var Mailbox + */ + protected $mailbox; protected function setUp() { @@ -65,7 +70,7 @@ public function testCustomNonExistentMessageFetch() $messageNumber = 98765; $this->expectException(MessageDoesNotExistException::class); - $this->expectExceptionMessageRegExp(\sprintf('/E_WARNING.+%s/s', \preg_quote((string) $messageNumber))); + $this->expectExceptionMessageRegExp(\sprintf('/E_WARNING.+%s/s', \preg_quote((string)$messageNumber))); new Message($connection->getResource(), $messageNumber); } @@ -236,6 +241,12 @@ public function provideIconvCharsets(): array return $provider; } + public function testAppendedMessageUid() + { + $uid = $this->mailbox->addMessage($this->getFixture('email_address')); + $this->assertEquals(1, $uid); + } + public function testEmailAddress() { $this->mailbox->addMessage($this->getFixture('email_address')); @@ -473,8 +484,7 @@ public function testRawHeaders() { $headers = 'From: from@there.com' . "\r\n" . 'To: to@here.com' . "\n" - . "\r\n" - ; + . "\r\n"; $originalMessage = $headers . 'Content' . "\n"; $this->mailbox->addMessage($originalMessage); @@ -643,9 +653,9 @@ public function testSignedMessage() $this->assertCount(3, $attachments); $expected = [ - 'data.xml' => 'PHhtbC8+', + 'data.xml' => 'PHhtbC8+', 'postacert.eml' => 'test-content', - 'smime.p7s' => 'MQ==', + 'smime.p7s' => 'MQ==', ]; foreach ($attachments as $attachment) {