无法通过IMAP删除或移动邮件

时间:2014-02-11 20:08:19

标签: c# asp.net c#-4.0 imap

我正在尝试使用<{3}}的 IMAP 功能将邮件移动到邮箱中的其他文件夹。问题是虽然邮件已被移动进入目标文件夹,它是从INBOX中删除。

我也遇到了删除邮件的问题。在这种情况下,我发现消息的状态仅从看不见变为看到

以下是我的尝试:

using (ImapClient ic = new ImapClient(
    host, email, password, ImapClient.AuthMethods.Login, 993, true))
{
     ic.SelectMailbox("INBOX");
     string[] uids = ic.Search(SearchCondition.From("someone@gmail.com"));

     MailMessage[] messages =
         ic.GetMessages(uids[0], uids[uids.Length - 1], false);

     ic.MoveMessage(uids[0], "Junk");
}   

1 个答案:

答案 0 :(得分:5)

标准IMAP协议没有MOVE命令(但有一个扩展可以添加它)。因此,根据您的IMAP服务器,客户端可能需要将MOVE + UID COPY + UID STORE +FLAGS.SILENT (\Deleted)实现为UID EXPUNGE,但这假定服务器支持UIDPLUS扩展。如果服务器也不支持UIDPLUS,则基本上不可能正确实现。您所能做的就是COPY + STORE +FLAGS.SILENT (\Deleted)但无法执行EXPUNGE,因为无法限制将被清除的消息(我想您可以取消标记任何其他已删除的消息,然后EXPUNGE ,然后将它们重新标记为\已删除,但这开始变得有风险。)

这可以解释为什么消息可能仍然存在于INBOX中(尽管它们至少应标记为已删除)。

不确定将邮件标记为已删除的原因是将其标记为已查看。这似乎是AE.NET.Mail中的一个错误。