我正在尝试优化用于执行搜索和检索结果的方法和方法。
实际上,我有一种方法(例如)在邮件上按身体搜索。它使用TextSearchQuery等,我检索UniqueIds列表。我对使用MimeMessages很感兴趣,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<UniqueId>)
或者某些东西可能很有趣。
感谢。
答案 0 :(得分:1)
MailKit没有任何内置方式一次下载一组邮件。一般来说,你不想这样做,因为消息可以是任何大小的,并且它们的集合可能很大。
IMAP的设计使您无论如何都不需要一次完整地下载多封邮件,因为IMAP的目的是成为邮件的远程存储系统。