我正在尝试使用<{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");
}
答案 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中的一个错误。