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

THu*_*ter 7 c# asp.net imap c#-4.0

我正在尝试使用ae.net.mailIMAP功能将邮件移动到邮箱中的另一个文件夹.问题是虽然邮件被移动到目标文件夹,但它不会从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");
}   
Run Code Online (Sandbox Code Playgroud)

jst*_*ast 5

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

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

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