2011-11-15 109 views
0

我正在使用MailSystem.NET操作系统库来处理IMAP。我的客户端程序出现问题(用C#编写)。它使用IMAP库查询邮件服务器。它将消息添加到客户端数据库后标记为已删除。但是,我不一定希望删除电子邮件,因为其他客户端将无法阅读电子邮件。使用IMAP删除邮件不会从MailSystem.NET中删除邮件

因此,我调用DeleteMessage(1,false),它应该将邮件标记为已删除,但由于'expunge'设置为false,因此它不会从服务器上物理删除。

如果我打开Thunderbird(一个不同的客户端)并连接到邮箱,果然消息已经消失。但是,我的另一位客户看到该消息仍然存在。邮件计数显示为1.如何确保当我从“INBOX”邮件文件夹返回邮件计数时,它只返回那些未标记为删除的邮件,即那些尚未被客户端程序读取的邮件计数?

+0

这是邮件客户端依赖,你不能做任何事情。选择命令EXISTS响应总是返回邮箱中的邮件数量(不检查任何邮件标记)。 – Ivar

+0

例如,我如何获取收件箱中未设置“已删除”标志的电子邮件的邮件数量? – jaffa

+0

可能最快的方法是使用IMAP搜索。您可以搜索“UNDELETED”消息。 UNDELETED搜索键 - 没有设置\ Deleted标志的消息。在RFC 3501 6.4.4中定义。 – Ivar

回答

0

正如Ivar在他的评论中提到的,您可以使用UNDELETED在邮箱中搜索邮件。但是,我发现“NOT DELETED”搜索标志在我一直使用的IMAP库上更好地工作。