При получении сообщения электронной почты большинство серверов помечают его флажком «SEEN». Если вы хотите оставить электронное письмо непрочитанным, вы можете просто удалить этот флаг.
Кроме того, вместо использования ImapClient.ListMessages
вы можете использовать ImapClient.SearchMessageUids
для получения идентификаторов непрочитанных писем.
Итак, попробуйте следующее:
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);
}
}