【问题标题】:Retrieve unread emails and leave them as unread in inbox检索未读电子邮件并将其保留为收件箱中的未读
【发布时间】:2021-01-19 16:31:42
【问题描述】:

我正在使用GemBox.Email,并且正在从我的收件箱中检索未读电子邮件,如下所示:

using (var imap = new ImapClient("imap.gmail.com"))
{
    imap.Connect();
    imap.Authenticate("username", "password");
    imap.SelectInbox();

    IEnumerable<string> unreadUids = imap.ListMessages()
        .Where(info => !info.Flags.Contains(ImapMessageFlags.Seen))
        .Select(info => info.Uid);

    foreach (string uid in unreadUids)
    {
        MailMessage unreadEmail = imap.GetMessage(uid);
        unreadEmail.Save(uid + ".eml");
    }
}

代码来自Receive 示例,但问题是在检索它们后,它们最终在我的收件箱中被标记为已读。

如何防止这种情况发生?
我想用ImapClient 下载它们,并在电子邮件服务器上将它们保留为未读。

【问题讨论】:

  • 我不具体了解这个库,但应该有一种方法可以传递 PEEK 标志,这样当您执行 GetMessage 时它不会将其标记为已读。
  • 令人惊讶的是,据我从文档中得知,这个库似乎没有实现用于获取消息的 PEEK 标志。也许是功能请求?

标签: c# email imap gembox-email


【解决方案1】:

编辑(2021-01-19):

请使用BugFixes 页面或NuGet 的最新版本重试。

最新版本提供ImapClient.PeekMessage 方法,您可以像这样使用:

using (var imap = new ImapClient("imap.gmail.com"))
{
    imap.Connect();
    imap.Authenticate("username", "password");
    imap.SelectInbox();

    foreach (string uid in imap.SearchMessageUids("UNSEEN"))
    {
        MailMessage unreadEmail = imap.PeekMessage(uid);
        unreadEmail.Save(uid + ".eml");
    }
}

原文:

在检索电子邮件时,大多数服务器都会用“SEEN”标志对其进行标记。如果您想将电子邮件设为未读,则只需删除该标志即可。

此外,您可以使用 ImapClient.SearchMessageUids 来获取未读电子邮件的 ID,而不是使用 ImapClient.ListMessages

所以,试试以下方法:

using (var imap = new ImapClient("imap.gmail.com"))
{
    imap.Connect();
    imap.Authenticate("username", "password");
    imap.SelectInbox();

    // Get IDs of unread emails.
    IEnumerable<string> unreadUids = imap.SearchMessageUids("UNSEEN");
    
    foreach (string uid in unreadUids)
    {
        MailMessage unreadEmail = imap.GetMessage(uid);
        unreadEmail.Save(uid + ".eml");

        // Remove "SEEN" flag from read email.
        imap.RemoveMessageFlags(uid, ImapMessageFlags.Seen);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2019-02-21
    相关资源
    最近更新 更多