public IEnumerable<MailMessage> GetPendingMessages()
        {
            int readMails = 0;
            if (!OutlookIsRunning)
            {
                LaunchOutlook();
            }
            int emailsCount = 0;
            InitializeObjects();
            
            do
            {

                var items = _mapiFolder.Items;
                emailsCount = items.Count;

                foreach (Object it in items)
                {
                    if (it is MailItem)
                    {
                        MailItem item = (MailItem)it;
                        readMails++;
                        yield return ParseMessage(item);
                        if (OnMessageRead != null)
                        {
                            OnMessageReadEventArgs e = new OnMessageReadEventArgs();
                            OnMessageRead(this, e);
                            if (e.Cancel)
                                continue;
                        }
                        item.Delete();
                        Thread.Sleep(1000);
                        if (readMails == 10)
                            break;
                    }
                }

            } while (emailsCount > 0 && (readMails > 0 && readMails < 10));

            DisposeObjects();
            
        }
        public IEnumerable<MailMessage> GetPendingMessages()
        {
            ex.FolderId inbox = new ex.FolderId(ex.WellKnownFolderName.Inbox, new ex.Mailbox(_config["NOME_CAIXA"]));
            ex.ItemView itemView = new ex.ItemView(_config["QTD_EMAILS_RECUPERAR"].To<int>(10));
            itemView.PropertySet = new ex.PropertySet(ex.BasePropertySet.IdOnly, ex.ItemSchema.Subject, ex.ItemSchema.DateTimeReceived);

            itemView.OrderBy.Add(ex.ItemSchema.DateTimeReceived, ex.SortDirection.Ascending);

            ex.FindItemsResults<ex.Item> findResults = GetExchangeService(this.Username, this.Password).FindItems(inbox, itemView);

            ex.ServiceResponseCollection<ex.GetItemResponse> items = GetExchangeService(this.Username, this.Password).BindToItems(findResults.Select(item => item.Id), new ex.PropertySet(ex.BasePropertySet.FirstClassProperties,
                ex.EmailMessageSchema.From,
                ex.EmailMessageSchema.ToRecipients,
                ex.EmailMessageSchema.Attachments,
                ex.EmailMessageSchema.CcRecipients,
                ex.EmailMessageSchema.BccRecipients,
                ex.EmailMessageSchema.Body,
                ex.EmailMessageSchema.DateTimeCreated,
                ex.EmailMessageSchema.DateTimeReceived,
                ex.EmailMessageSchema.DateTimeSent,
                ex.EmailMessageSchema.DisplayCc,
                ex.EmailMessageSchema.DisplayTo,
                ex.EmailMessageSchema.Subject));

            foreach (ex.GetItemResponse item in items)
            {
                yield return ParseItem(item);
                OnMessageReadEventArgs ea = new OnMessageReadEventArgs();
                if (OnMessageRead != null)
                {
                    OnMessageRead(this, ea);
                    if (ea.Cancel)
                        continue;
                }
                GetExchangeService(this.Username, this.Password).DeleteItems(new ex.ItemId[] { item.Item.Id }, ex.DeleteMode.MoveToDeletedItems, null, null);

            }

        }
        public IEnumerable<System.Net.Mail.MailMessage> GetPendingMessages()
        {
            using (Pop3Client client = new Pop3Client())
            {
               
                client.Connect(Host,
                    PortNumber,
                    UseSSL,
                    DEFAULT_TIMEOUT,
                    DEFAULT_TIMEOUT,
                    ValidateServerCertificate);

                client.Authenticate(Username, Password);

                // Obtém o número de mensagens na caixa de entrada
                int messageCount = client.GetMessageCount();

                IList<OpenPop.Mime.Message> allMessages = new List<OpenPop.Mime.Message>(messageCount);

                // Mensagens são numeradas a partir do número 1
                for (int i = 1; i <= messageCount; i++)
                {
                    Message _mensagem = client.GetMessage(i);
                    
                    MailMessage m = _mensagem.ToMailMessage();
                    MessageHeader headers = _mensagem.Headers;
                    
                    foreach (var mailAddress in headers.Bcc)
                        m.Bcc.Add(mailAddress.MailAddress);

                    foreach (var mailAddress in headers.Cc)
                        m.CC.Add(mailAddress.MailAddress);

                    m.Headers.Add("Date", headers.Date);
                    m.From = headers.From.MailAddress;

                    yield return m;

                    if (OnMessageRead != null)
                    {
                        OnMessageReadEventArgs e = new OnMessageReadEventArgs();
                        OnMessageRead(this, e);
                        if (e.Cancel)
                            continue;
                    }
                    try
                    {
                        client.DeleteMessage(i);
                    }
                    catch (PopServerException)
                    { 
                        //Ignore
                    }
                }
            }
        }