我有一个使用带有G-mail的AE.Net.Mail IMAP客户端的Windows服务。该服务每隔x分钟运行一次,检索收件箱消息,应用一些业务逻辑,并将其标记为已删除。这一切都有效。
但是,Gmail会将其留在收件箱中,以便后续调用再次获取它们。我可以通过查看Seen或Deleted标志来跳过它们,但我根本不会得到它们。除非有人进入并清理收件箱,否则频繁提取会以指数方式增长。
我已尝试使用Gmails删除选项,但它们似乎没有任何效果。
答案 0 :(得分:3)
我知道这个帖子有点旧,但万一有人想找到办法,可以尝试:
ImapClient ic = new ImapClient("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
var mailMessage = ic.SearchMessages(SearchCondition.Unseen(), false, true).ToList();
现在,您可以遍历mailMessage以查找未读电子邮件。
答案 1 :(得分:2)
我决定在检索它们时将它们过滤掉。不理想,但它有效
List<AE.Net.Mail.MailMessage> mm = _client.GetMessages(0, 10, false, false)
.Where(m => !m.Flags.HasFlag(Flags.Seen)
&& !m.Flags.HasFlag(Flags.Deleted)).ToList();
答案 2 :(得分:0)
我知道这是一个过时的帖子,但是万一有人正在寻找一种方法可以尝试移动:
AE.Net.Mail.Imap.Mailbox[] mailBoxes = client.ListMailboxes(string.Empty, "*");
bool existeMailBoxArquivo = false;
const string ARQUIVO = "ARQUIVO";
foreach (var mailBox in mailBoxes)
{
if (mailBox.Name == ARQUIVO)
existeMailBoxArquivo = true;
}
if (!existeMailBoxArquivo)
client.CreateMailbox(ARQUIVO);
client.MoveMessage(msg.Uid, ARQUIVO);
因此,您将邮件移动到文件夹中,然后再次浏览时,只需选择要搜索的主框即可