public async Task <IEnumerable <ExtractedEmailMessage> > GetEmailMessageFromServerViaPopAsync(IEmailConfiguration popEmailConfiguration, int batchsize = -1) { var results = new List <ExtractedEmailMessage>(); using (var client = new Pop3Client()) { await ConnectToServer(popEmailConfiguration, client); var totalMessages = batchsize <= -1 || batchsize > client.Count ? client.Count : batchsize; for (int i = 0; i < totalMessages; i++) { var uid = client.GetMessageUid(i); var message = client.GetMessage(i); var extractedMessage = new ExtractedEmailMessage { FromAddress = message.From.Mailboxes.FirstOrDefault()?.Address, ToAddress = message.To.Mailboxes.Select(x => x.Address).ToList(), HtmlBody = message.HtmlBody, TextBody = message.TextBody, Subject = message.Subject, MessageUniqueId = uid, Attachments = await GetAttachmentsInBase64String(message) }; results.Add(extractedMessage); } await client.DisconnectAsync(true); } return(results); }
public async Task <IEnumerable <ExtractedEmailMessage> > GetEmailMessageFromServerViaImapAsync(IEmailConfiguration imapEmailConfiguration, int batchSize = -1) { var results = new List <ExtractedEmailMessage>(); using (var client = new ImapClient()) { await ConnectToServer(imapEmailConfiguration, client); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); var messageItems = await inbox.FetchAsync(0, batchSize - 1, MessageSummaryItems.UniqueId | MessageSummaryItems.Size | MessageSummaryItems.Flags); foreach (var item in messageItems) { var message = inbox.GetMessage(item.UniqueId); var extractedEmailMessage = new ExtractedEmailMessage { FromAddress = message.From.Mailboxes.FirstOrDefault()?.Address, ToAddress = message.To.Mailboxes.Select(x => x.Address).ToList(), TextBody = message.TextBody, HtmlBody = message.HtmlBody, Subject = message.Subject, MessageUniqueId = item.UniqueId.ToString(), Attachments = await GetAttachmentsInBase64String(message) }; results.Add(extractedEmailMessage); } client.Disconnect(true); } return(results); }