mail - IMAP -只获取看不见的消息

本文关键字:看不见 消息 获取 -只 IMAP mail | 更新日期: 2023-09-27 18:12:26

我使用带有G-mail的AE.Net.Mail IMAP客户端使用Windows服务。该服务每隔x分钟运行一次,检索收件箱消息,应用一些业务逻辑,并将其标记为已删除。这一切都行得通。

但是,Gmail将它们留在收件箱中,以便随后的调用再次获取它们。我可以通过查看已看到或已删除的标志跳过它们,但我宁愿根本不得到它们。除非有人经常进入并清理收件箱,否则获取将呈指数级增长。

我试过gmail的删除选项,但似乎没有任何效果。

mail - IMAP -只获取看不见的消息

我知道这是一个有点旧的帖子,但如果有人正在寻找一种方法来做到这一点,可以尝试:

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循环查看未读邮件。

我决定在检索它们时将它们过滤掉。不理想,但它工作

 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();

我知道这是一个有点旧的帖子,但如果有人正在寻找一种方法来做到这一点,可以尝试移动:

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);

所以你把消息移动到一个文件夹中,当你再次浏览时,只要选择主框来搜索