Skip to content

Commit b72b2ed

Browse files
k9umaWebklex
authored andcommitted
Added getUnseenMessages (#33)
* Added getUnseenMessages Gets all messages flagged as unread.. * Changelog & Readme Updated CHANGELOG.md & README.md
1 parent ee0e83f commit b72b2ed

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
1414
### Affected Classes
1515
- All
1616

17+
## [1.0.3.6] - 2017-10-24
18+
### Added
19+
- A method to get only unread messages from email folders to [Client::class](src/IMAP/client.php)
1720

1821
## [1.0.3.5] - 2017-10-18
1922
### Fixed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ You can define your accounts inside the [config/imap.php](src/config/imap.php) f
150150
| openFolder | \Webklex\IMAP\Folder $folder | | Open a given folder. |
151151
| createFolder | string $name | | Create a new folder. |
152152
| getMessages | \Webklex\IMAP\Folder $folder, string $criteria | array | Get messages from folder. |
153+
| getUnseenMessages | \Webklex\IMAP\Folder $folder, string $criteria | array | Get Unseen messages from folder. |
153154
| getQuota | | array | Retrieve the quota level settings, and usage statics per mailbox |
154155
| getQuotaRoot | string $quota_root | array | Retrieve the quota settings per user |
155156
| countMessages | | int | Gets the number of messages in the current mailbox |

src/IMAP/Client.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,41 @@ public function getMessages(Folder $folder, $criteria = 'ALL', $fetch_options =
311311
}
312312
}
313313

314+
/**
315+
* Get all unseen messages from folder
316+
*
317+
* @param Folder $folder
318+
* @param string $criteria
319+
* @param integer $fetch_options
320+
*
321+
* @return array
322+
* @throws GetMessagesFailedException
323+
*/
324+
public function getUnseenMessages(Folder $folder, $criteria = 'UNSEEN', $fetch_options = null) {
325+
$this->checkConnection();
326+
327+
try {
328+
$this->openFolder($folder);
329+
$messages = [];
330+
$availableMessages = imap_search($this->connection, $criteria, SE_UID);
331+
332+
if ($availableMessages !== false) {
333+
$msglist = 1;
334+
foreach ($availableMessages as $msgno) {
335+
$message = new Message($msgno, $msglist, $this, $fetch_options);
336+
337+
$messages[$message->message_id] = $message;
338+
$msglist++;
339+
}
340+
}
341+
return $messages;
342+
} catch (\Exception $e) {
343+
$message = $e->getMessage();
344+
345+
throw new GetMessagesFailedException($message);
346+
}
347+
}
348+
314349
/**
315350
* Get option for imap_open and imap_reopen.
316351
* It supports only isReadOnly feature.

0 commit comments

Comments
 (0)