C# 我可以取一个可枚举的<;mimessage>;来自可枚举的<;UniqueId>;在邮箱里?

C# 我可以取一个可枚举的<;mimessage>;来自可枚举的<;UniqueId>;在邮箱里?,c#,.net,imap,mailkit,C#,.net,Imap,Mailkit,我正在尝试优化我用来执行搜索和检索结果的方法和方式 实际上,我有一种方法(例如)在邮件上按身体搜索。它使用TextSearchQuery等等,我检索uniqueid列表。我对MIMessages很感兴趣,它基本上有我需要处理的所有东西 public IEnumerable<MimeMessage> BuscarEnCuerpoEmail(string texto, bool noLeidos = false, bool flagged = false) { List<M

我正在尝试优化我用来执行搜索和检索结果的方法和方式

实际上,我有一种方法(例如)在邮件上按身体搜索。它使用TextSearchQuery等等,我检索uniqueid列表。我对MIMessages很感兴趣,它基本上有我需要处理的所有东西

public IEnumerable<MimeMessage> BuscarEnCuerpoEmail(string texto, bool noLeidos = false, bool flagged = false)
{
    List<MimeMessage> resultado = new List<MimeMessage>();
    try
    {
        imap.Inbox.Open(FolderAccess.ReadOnly);
        if (!String.IsNullOrWhiteSpace(texto) 
            && !noleidos && !flagged)   //Busca en todos los correos
        {
           var parametrosBusqueda = new TextSearchQuery(SearchTerm.BodyContains, texto)
                .And(SearchQuery.All);
            var resultadoBusqueda = imap.Inbox.Search(parametrosBusqueda);
            return ObtenerMensajes(resultadoBusqueda);
        } . . . .
有没有办法在服务器上执行GetMessage并直接获取mimemessage列表?比如
GetBatchMimeMessages(List)
或者一些有趣的东西


谢谢。

MailKit没有任何内置方式一次下载一组邮件。通常情况下,您无论如何都不想这样做,因为消息可以是任意大小的,并且它们的集合可能是海量的


IMAP的设计使您不必一次下载多封完整的邮件,因为IMAP的目的是作为邮件的远程存储系统。

谢谢您的回复,Jeff。最初,我的课程是为了经常使用,所以应该下载和处理的电子邮件不会太多,所以我想这对我来说很好。Mailkit FTW!
public IEnumerable<MimeMessage> ObtenerMensajes(IEnumerable<UniqueId> ids)
{
    List<MimeMessage> result = new List<MimeMessage>();
    foreach (var id in ids)
    {
        var message = imap.Inbox.GetMessage(id);
        result.Add(message);
        //yield return message;
    }
    return result;
}