public Models.MessageSummary ToMessageSummary(Core.MessageSummary messageSummary)
        {
            if (messageSummary == null)
            {
                return(null);
            }

            var result = new Models.MessageSummary
            {
                From      = messageSummary.MailFrom,
                Id        = messageSummary.Id,
                MessageId = this._dataEncryptor.EncryptMessageId(messageSummary.Id),
                Subject   = messageSummary.Subject,
                TimeStamp = messageSummary.ReceiveAt,
                To        = messageSummary.MailTo
            };

            return(result);
        }
示例#2
0
        public ActionResult MessageList(String type)
        {
            var viewModel = new MessageListSummary();

            using (var client = new ImapClient())
            {
                client.Connect("imap.gmail.com", 993, true);
                var user = (Models.User)Session["User"];
                client.Login(user.Email, user.Password);
                client.Behavior.MessageFetchMode           = MessageFetchMode.Tiny;
                client.Behavior.AutoPopulateFolderMessages = true;

                // The Inbox folder is always available on all IMAP servers...
                Folder folder = client.Folders.Inbox;
                switch (type)
                {
                case "Inbox":
                    folder = client.Folders.Inbox;
                    break;

                case "Sent":
                    folder = client.Folders.Sent;
                    break;
                }

                // Retrieve storage account from connection string.
                var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
                // Create the blob client.
                var blobClient = storageAccount.CreateCloudBlobClient();
                // Retrieve reference to a previously created container.
                var container = blobClient.GetContainerReference("inbox");
                // Retrieve reference to a blob named "myblob".
                var blockBlob = container.GetBlockBlobReference(user.Email);

                using (var memory = new MemoryStream())
                    // Create or overwrite the "myblob" blob with contents from a local file.
                    using (var writer = new StreamWriter(memory))
                    {
                        writer.Write(folder);
                        writer.Flush();
                        memory.Seek(0, SeekOrigin.Begin);
                        blockBlob.UploadFromStream(memory);
                    }

                viewModel.Total = folder.Messages.Count();

                var messageSummaries = new List <Models.MessageSummary>();
                for (var i = 0; i < viewModel.Total; i++)
                {
                    var message        = folder.Messages[i];
                    var messageSummary = new Models.MessageSummary()
                    {
                        Title = message.Subject,
                        From  = message.From.DisplayName,
                        Read  = message.Seen
                    };
                    messageSummaries.Add(messageSummary);
                }
                messageSummaries.Reverse(); // Most recent first.
                viewModel.MessageSummaries = messageSummaries;
                client.Disconnect();
            }
            ViewBag.Message = " - " + type;
            return(View("MessageList", viewModel));
        }