Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }