C# MailKit - 如何阅读最后一封电子邮件
C# MailKit - How to read Last Email
我编写了代码来使用 Mailkit 阅读电子邮件,在 Mailkit 中有一种方法可以阅读第一封电子邮件,但我找不到一种方法来阅读最近一封电子邮件的主题
using (var client = new ImapClient())
{
client.Connect(EXT_IMAP_SERVER, EXT_IMAP_PORT, true);
client.Authenticate(EXT_USERNAME, EXT_PASSWORD);
var inbox = client.Inbox;
inbox.Open(FolderAccess.ReadWrite);
var LAST_EMAIL = inbox.FirstUnread;// ****** here is my issue ******
var LAST_MSG = client.Inbox.GetMessage(LAST_EMAIL);
inbox.AddFlags(LAST_EMAIL, MessageFlags.Seen, true);
Console.WriteLine(LAST_MSG.Subject);
client.Disconnect(true);
}
in the Mailkit there is a way to read first email
文件夹中的第一封电子邮件始终具有 0
的索引。 FirstUnread
属性 是文件夹中尚未阅读的最旧邮件的索引。
换句话说,如果您的文件夹中有 100 封邮件,但您已经几天没有查看邮件,那么您可能有几封未读邮件。也许最后 3 条消息是未读的,所以这些未读消息的索引将是 97
、98
和 99
。 FirstUnread
索引在此示例中为 97
。
but i couldn't find a way to read subject of last recent email
最后一条消息的索引总是folder.Count - 1
。就像数组中最后一个元素的索引总是 array.Count - 1
.
或者为了更清楚,如果您有一个包含 100
封邮件的文件夹,则该文件夹中最后一封邮件的索引将为 99
.
var message = folder.GetMessage (folder.Count - 1);
Console.WriteLine (message.Subject);
我编写了代码来使用 Mailkit 阅读电子邮件,在 Mailkit 中有一种方法可以阅读第一封电子邮件,但我找不到一种方法来阅读最近一封电子邮件的主题
using (var client = new ImapClient())
{
client.Connect(EXT_IMAP_SERVER, EXT_IMAP_PORT, true);
client.Authenticate(EXT_USERNAME, EXT_PASSWORD);
var inbox = client.Inbox;
inbox.Open(FolderAccess.ReadWrite);
var LAST_EMAIL = inbox.FirstUnread;// ****** here is my issue ******
var LAST_MSG = client.Inbox.GetMessage(LAST_EMAIL);
inbox.AddFlags(LAST_EMAIL, MessageFlags.Seen, true);
Console.WriteLine(LAST_MSG.Subject);
client.Disconnect(true);
}
in the Mailkit there is a way to read first email
文件夹中的第一封电子邮件始终具有 0
的索引。 FirstUnread
属性 是文件夹中尚未阅读的最旧邮件的索引。
换句话说,如果您的文件夹中有 100 封邮件,但您已经几天没有查看邮件,那么您可能有几封未读邮件。也许最后 3 条消息是未读的,所以这些未读消息的索引将是 97
、98
和 99
。 FirstUnread
索引在此示例中为 97
。
but i couldn't find a way to read subject of last recent email
最后一条消息的索引总是folder.Count - 1
。就像数组中最后一个元素的索引总是 array.Count - 1
.
或者为了更清楚,如果您有一个包含 100
封邮件的文件夹,则该文件夹中最后一封邮件的索引将为 99
.
var message = folder.GetMessage (folder.Count - 1);
Console.WriteLine (message.Subject);