【问题标题】:Could I fetch an Enumerable<MimeMessage> from an Enumerable<UniqueId> in Mailkit?我可以从 Mailkit 中的 Enumerable<UniqueId> 中获取 Enumerable<MimeMessage> 吗?
【发布时间】:2017-07-14 23:17:33
【问题描述】:

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

实际上,我有一种方法(例如)通过邮件正文进行搜索。它使用 TextSearchQuery 等,我检索 UniqueIds 列表。我对使用 MimeMessages 很感兴趣,它基本上拥有我需要使用的一切。

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);
        } . . . .

我有一个方法可以将 MimeMessage 添加到集合中,并且每次都添加一个 GetMessage...

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;
}

有没有办法在服务器中执行 GetMessage 并直接获取 MimeMessages 列表?喜欢GetBatchMimeMessages(List&lt;UniqueId&gt;) 或其他有趣的东西。

谢谢。

【问题讨论】:

    标签: c# .net imap mailkit


    【解决方案1】:

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

    IMAP 的设计使您实际上不需要一次完整下载多条消息,因为 IMAP 的目的是成为邮件的远程存储系统。

    【讨论】:

    • 感谢您的回复,杰夫。最初,我的课程旨在经常使用,因此要下载和处理的假定电子邮件不应该很大,所以我想这对我来说非常好。 Mailkit FTW!
    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多