我正在研究一小段软件,以检查我的邮件帐户(任何免费邮件,imap)是否有> 0个未读电子邮件。获取未读电子邮件的数量
我编码在C,但我不是专家...
如何C'S IMAP4-API(或只是某事可比)来检查是否有任何未读邮件(不取他们)?
在此先感谢
我正在研究一小段软件,以检查我的邮件帐户(任何免费邮件,imap)是否有> 0个未读电子邮件。获取未读电子邮件的数量
我编码在C,但我不是专家...
如何C'S IMAP4-API(或只是某事可比)来检查是否有任何未读邮件(不取他们)?
在此先感谢
既然你确实似乎是使用C API,你可以做UNSEEN消息的imap4_search。这应该允许您计算未读消息的数量。一个类似的PHP示例可以在这里找到:http://www.electrictoolbox.com/php-imap-unread-messages/
有几种方法可以做到这一点。我会在协议层解释,我敢打赌,你的C库会公开至少其中一个...
通常最有效的方法是发出STATUS命令并要求文件夹的UNSEEN统计:
A001 STATUS "INBOX" (UNSEEN)
* STATUS "INBOX" (UNSEEN 16)
A001 OK STATUS completed
您可以选择文件夹并选择[UNSEEN]响应代码是否回来上无标记的确定:
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还是使用C API?像imap4_search()搜索UNSEEN消息应该做的伎俩不应该吗? – Bart 2010-11-12 09:25:40
我到目前为止发现的所有内容都是这样的:http://docs.sun.com/source/816-6027-10/imrc.htm 但是我还不清楚如何获取未读邮件的数量 – Bernd 2010-11-12 09:27:33
' long mail_status(MAILSTREAM * stream,char * mbx,long flags);' - 用设置为'SA_UNSEEN'的'flags'调用它。 – dkarp 2011-01-11 21:08:59