我在Gmail上有一个帐户,收件箱邮箱文件夹中包含12,000封邮件。 我的问题是我只想收到前100条邮件,我试了很多但是我失败了。 这是代码
ImapClient go_client = new ImapClient();
CompletionResponse go_response = null;
Mailbox go_Folders_As_Tree = null;
go_client.Host = "Host";
go_client.Port = "port no";
go_client.Username = "user id";
go_client.Password = "pasword";
go_client.SSLInteractionType = EInteractionType.SSLPort;
go_response = go_client.Login();
go_Folders_As_Tree = go_client.GetMailboxTree();
Mailbox inbox = Mailbox.Find(go_Folders_As_Tree, "INBOX");
MessageCollection tmp = go_client.GetAllMessageHeaders(inbox);
foreach (ImapMessage msg in tmp)
{
ImapMessage actual_message = go_client.GetMessageText(msg.UID, go_Folders_As_Tree.Children[1]);
}
这样我就要等待所有12,000封邮件。
答案 0 :(得分:0)
int maxCount = 200;
for (int i = 1; i <= maxCount; i++) {
// Your Code here...
}
答案 1 :(得分:0)
这似乎是使用LINQ的Take
扩展方法的好时机:
MessageCollection tmp = go_client.GetAllMessageHeaders(inbox);
foreach (ImapMessage msg in tmp.Take(100))
{
ImapMessage actual_message = go_client.GetMessageText(msg.UID, go_Folders_As_Tree.Children[1]);
}
请注意,这仍会下载所有12,000个标题,但只会删除前100个标题的内容(如果这是一个问题,请为我们提供指向ImapClient
文档的链接,以便我们找到更好的方法) 。另请注意,如果标题是无序的,您将收到一组不可预测的电子邮件,并且您可能希望首先执行OrderBy
。 (例如tmp.OrderByDescending(x=>x.Date).Take(100)
)