mail - IMAP -只获取看不见的消息
本文关键字:看不见 消息 获取 -只 IMAP mail | 更新日期: 2023-09-27 18:12:26
我使用带有G-mail的AE.Net.Mail IMAP客户端使用Windows服务。该服务每隔x分钟运行一次,检索收件箱消息,应用一些业务逻辑,并将其标记为已删除。这一切都行得通。
但是,Gmail将它们留在收件箱中,以便随后的调用再次获取它们。我可以通过查看已看到或已删除的标志跳过它们,但我宁愿根本不得到它们。除非有人经常进入并清理收件箱,否则获取将呈指数级增长。
我试过gmail的删除选项,但似乎没有任何效果。
我知道这是一个有点旧的帖子,但如果有人正在寻找一种方法来做到这一点,可以尝试:
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);
所以你把消息移动到一个文件夹中,当你再次浏览时,只要选择主框来搜索