/// <summary> /// Gets the mails inbox. /// </summary> /// <param name="enumCatalog">The enum catalog.</param> /// <returns></returns> public List <EmailSubject> GetMailsInbox(EmailCatalog enumCatalog) { var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); var client = this.FormsAuthenticationHelper.CurrentClient; var subList = new List <EmailSubject>(); if (client != null) { service.Credentials = new WebCredentials( client.Email.Split('@')[0], MyCryptoHelper.DecryptStringAES( client.Password, ConfigurationManager.AppSettings["KeyForAESCrypto"])); service.AutodiscoverUrl(client.Email); foreach (var item in service.FindItems(WellKnownFolderName.Inbox, new ItemView(int.MaxValue))) { var email = (EmailMessage)item; subList.Add(new EmailSubject { Subject = email.Subject, Date = email.DateTimeCreated.ToString(CultureInfo.InvariantCulture) }); } } return(subList); }
/// <summary> /// Gets the emails. /// </summary> /// <param name="emailCatalog"> /// The email Catalog. /// </param> /// <returns> /// </returns> public string GetEmails(EmailCatalog emailCatalog) { var sb = new StringBuilder(); var service = new ExchangeService(ExchangeVersion.Exchange2010); var client = this.FormsAuthenticationHelper.CurrentClient; if (client != null) { service.Credentials = new WebCredentials( client.Email.Split('@')[0], MyCryptoHelper.DecryptStringAES( client.Password, ConfigurationManager.AppSettings["KeyForAESCrypto"])); service.AutodiscoverUrl(client.Email); try { FindItemsResults <Item> emails; switch (emailCatalog) { case EmailCatalog.Inbox: emails = service.FindItems(WellKnownFolderName.Inbox, new ItemView(int.MaxValue)); break; case EmailCatalog.SentItems: emails = service.FindItems(WellKnownFolderName.SentItems, new ItemView(int.MaxValue)); break; case EmailCatalog.DeletedItems: emails = service.FindItems(WellKnownFolderName.DeletedItems, new ItemView(int.MaxValue)); break; case EmailCatalog.Drafts: emails = service.FindItems(WellKnownFolderName.Drafts, new ItemView(int.MaxValue)); break; default: emails = service.FindItems(WellKnownFolderName.Inbox, new ItemView(int.MaxValue)); break; } var clientId = this.FormsAuthenticationHelper.CurrentClient.Id; var catalogId = this.RepositoryCatalogs.SearchFor(x => x.CatalogName == emailCatalog.ToString()) .Select(x => x.CatalogId) .SingleOrDefault(); var items = service.BindToItems( emails.Select(item => item.Id), new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Subject, ItemSchema.Body)); var emailItemCollection = items.Select( item => new EmailItem { Body = !string.IsNullOrEmpty(item.Item.Body.ToString()) ? item.Item.Body.ToString() : "!!!Email without body!!!", CreationDate = item.Item.DateTimeCreated, InternetMessageId = item.Item is EmailMessage && !string.IsNullOrEmpty(((EmailMessage)item.Item).InternetMessageId) ? ((EmailMessage)item.Item).InternetMessageId : "InvalidInternetMessageId", Subject = item.Item.Subject ?? "!!!Email without subject!!!", CatalogId = catalogId, ClientId = clientId }).ToList(); var existsEmails = this.RepositoryEmailItems.SearchFor(x => x.CatalogId == catalogId && x.ClientId == clientId); foreach (var emailItem in emailItemCollection) { // add to db if not exist EmailItem item = emailItem; if ( !existsEmails.Any(e => e.InternetMessageId == item.InternetMessageId)) { this.RepositoryEmailItems.Add(emailItem); this.RepositoryEmailItems.Save(); } } // var allEmailsInCatalog = this.RepositoryClients.GetById(clientId).EmailItems // .Where(emailItem => emailItem.CatalogId == catalogId) // .OrderByDescending(element => element.CreationDate); var allEmailsInCatalog = this.RepositoryEmailItems.GetAll().Where(element => element.CatalogId == catalogId && element.ClientId == clientId).OrderByDescending(element => element.CreationDate); foreach (var item in allEmailsInCatalog) { var subjectWithId = new SubjectWithId { Subject = item.Subject, Id = item.InternetMessageId, DateCreation = item.CreationDate.ToString( CultureInfo.InvariantCulture) }; var jsonUser = JsonConvert.SerializeObject(subjectWithId); sb.Append(jsonUser + ","); } sb.Remove(sb.Length - 1, 1); } catch (Exception ex) { return(ex.Message); } } return(string.Format(Constants.FormatJson, sb)); }