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