Существует несколько способов сделать это. Я объясню на уровне протокола, и я бы поспорил, что ваша библиотека C выведет хотя бы одну из этих ...
В общем, наиболее эффективным способом является выпуск команды STATUS и запрос на UNSEEN папки количество:
A001 STATUS "INBOX" (UNSEEN)
* STATUS "INBOX" (UNSEEN 16)
A001 OK STATUS completed
вы можете выбрать папку и проверьте, поступает ли [UNSEEN] код ответа обратно на немаркированной OK:
A002 SELECT INBOX
* 223 EXISTS
* 223 RECENT
* OK [UNSEEN 1] mailbox contains unseen messages
* OK [UIDVALIDITY 1] UIDs are valid for this mailbox
* OK [UIDNEXT 554] next expected UID is 554
* FLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $MDNSent)
* OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $MDNSent \*)] junk-related flags are not permanent
* OK [HIGHESTMODSEQ 504] modseq tracked on this mailbox
A002 OK [READ-WRITE] SELECT completed
После того, как папка была выбрана, вы можете выдать команду ПОИСК и запросить сообщения UNSEEN (если что-то вернется, у вас есть непрочитанная почта):
A003 SEARCH UNSEEN
* SEARCH 1 2 12 13 14 155 156 157 158 159 183 184 185 215 216 218
A003 OK SEARCH completed
Обратите внимание, что все они работают на основе каждой папки. Если вы хотите узнать обо всех папках в своем почтовом ящике, вам придется перебирать их все. Чтобы получить полный список папок, используйте команду LIST:
A004 LIST "" "*"
* LIST (\HasNoChildren) "/" "Drafts"
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\NoInferiors) "/" "Junk"
* LIST (\HasNoChildren) "/" "Sent"
* LIST (\HasNoChildren) "/" "Trash"
* LIST (\HasNoChildren) "/" "Unread Messages"
A004 OK LIST completed
Вы все еще ищете API или используете API C? Что-то вроде imap4_search(), выполняющего поиск сообщений UNSEEN, должно делать трюк, не так ли? – Bart
Все, что я нашел до сих пор, это: http://docs.sun.com/source/816-6027-10/imrc.htm Но я все еще не понимаю, как получить количество непрочитанных писем – Bernd
' long mail_status (MAILSTREAM * stream, char * mbx, long flags); '- вызвать его с' flags', установленным на 'SA_UNSEEN'. – dkarp