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 } } } }