Il y a plusieurs façons de le faire. Je vais expliquer au niveau du protocole, et je parie que votre bibliothèque C exposera au moins un de ces ...
En général, le moyen le plus efficace est d'exécuter la commande STATUS et de demander le dossier UNSEEN count:
A001 STATUS "INBOX" (UNSEEN)
* STATUS "INBOX" (UNSEEN 16)
A001 OK STATUS completed
vous pouvez sélectionner le dossier et vérifier si le code de réponse [INVISIBLE] revient sur un OK non marqué:
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
une fois que le dossier a été sélectionné, vous pouvez émettre une commande de recherche et demander des messages UNSEEN (si quelque chose revient, vous avez du courrier non lu) :
A003 SEARCH UNSEEN
* SEARCH 1 2 12 13 14 155 156 157 158 159 183 184 185 215 216 218
A003 OK SEARCH completed
Notez que tous ces éléments fonctionnent sur une base par dossier. Si vous voulez savoir sur tous les dossiers de votre boîte aux lettres, vous devrez parcourir tous. Pour obtenir la liste complète des dossiers, utilisez la commande 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
Êtes-vous toujours à la recherche d'une API ou de l'API C? Quelque chose comme imap4_search() faire une recherche de messages non lus devrait faire l'affaire devrait-il pas? – Bart
Tout ce que je l'ai trouvé à ce jour est la suivante: http://docs.sun.com/source/816-6027-10/imrc.htm Mais je ne suis pas encore clair sur la façon d'obtenir le nombre de mails non lus – Bernd
' à long mail_status (* Mailstream flux, char * MBX, drapeaux longs); '- appeler avec' flags' à 'SA_UNSEEN'. – dkarp