【问题标题】:Get the number of unread emails获取未读邮件的数量
【发布时间】:2010-12-30 11:55:03
【问题描述】:

我正在开发一个小软件来检查我的邮件帐户中是否有 >0 封未读电子邮件(任何免费邮件,imap)。

我正在用 C 编码,但我不是专家...

如何使用 C 的 imap4-api(或只是类似的东西)来检查是否有任何未读电子邮件(不获取它们)?

提前致谢

【问题讨论】:

  • 您还在寻找 API 还是使用 C API?像 imap4_search() 这样的东西搜索 UNSEEN 消息应该可以解决问题,不是吗?
  • 到目前为止我发现的只有这个:docs.sun.com/source/816-6027-10/imrc.htm 但我仍然不清楚如何获取未读邮件的数量
  • long mail_status(MAILSTREAM *stream, char *mbx, long flags); -- 调用它时将flags 设置为SA_UNSEEN

标签: c imap email-client


【解决方案1】:

有几种方法可以做到这一点。我将在协议级别进行解释,并且我敢打赌,您的 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

选择文件夹后,您可以发出 SEARCH 命令并询问 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

【讨论】:

    【解决方案2】:

    鉴于您确实似乎在使用 C API,您可以对 UNSEEN 消息执行 imap4_search。这应该允许您计算未读消息的数量。可以在此处找到类似的 PHP 示例:http://www.electrictoolbox.com/php-imap-unread-messages/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多