Using this we can get required field only no need to fetch complete mail.
You can use Imap.GetMessageInfoByUID(List uids) or its Sequence overload.
You'll get basic email info such as From, To, Subject and also obtain email structure e.g. attachment count, names:
https://www.limilabs.com/blog/get-email-information-from-imap-fast
using (Imap imap = new Imap()) { imap.Connect("imap.example.com"); // or ConnectSSL imap.UseBestLogin("user", "password"); imap.SelectInbox(); List<long> uids = imap.Search(Flag.Unseen); List<MessageInfo> infos = imap.GetMessageInfoByUID(uids); foreach (MessageInfo info in infos) { string subject = info.Envelope.Subject; IList<MailBox> from = info.Envelope.From); IList<MailAddress> to = info.Envelope.To); foreach (MimeStructure attachment in info.BodyStructure.Attachments) { string fileName = attachment.SafeFileName; long size = attachment.Size; } } imap.Close(); }