예제 #1
0
        private void moveToToolStripMenuItem1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            Task.Run(() =>
            {
                if (CurrentView == EmailView.CustomFolder)
                {
                    foreach (DataGridViewRow row in dataGridViewEmails.SelectedRows)
                    {
                        var selectedEmail = GetCustomFolderList(OpenedCustomFolderName)[(string)row.Cells[0].Value];

                        var oldFolder = FolderList[selectedEmail.CustomFolderName];
                        --oldFolder.ItemCount;

                        if (e.ClickedItem.Text == "Sent Emails")
                        {
                            var message = new MimeMessage();

                            message.From.Add(new MailboxAddress(selectedEmail.From));
                            message.To.Add(new MailboxAddress(selectedEmail.To));
                            message.Subject = selectedEmail.Subject;
                            message.Body    = new TextPart("plain")
                            {
                                Text = selectedEmail.TextBody
                            };
                            message.Date = selectedEmail.Date;

                            MailReceiver.AddMessageToFolder(EmailType.SentEmails, message);

                            CollectionEmail collectionEmail;
                            EmailCollection.TryRemove(selectedEmail.Id, out collectionEmail);
                        }
                        else if (e.ClickedItem.Text == "Inbox")
                        {
                            var message = new MimeMessage();

                            message.From.Add(new MailboxAddress(selectedEmail.From));
                            message.To.Add(new MailboxAddress(selectedEmail.To));
                            message.Subject = selectedEmail.Subject;
                            message.Body    = new TextPart("plain")
                            {
                                Text = selectedEmail.TextBody
                            };
                            message.Date = selectedEmail.Date;

                            MailReceiver.AddMessageToFolder(EmailType.Inbox, message);

                            CollectionEmail collectionEmail;
                            EmailCollection.TryRemove(selectedEmail.Id, out collectionEmail);
                        }
                        else
                        {
                            var selectedFolderId = FolderList.FirstOrDefault(x => x.Value.FolderName == e.ClickedItem.Text).Value.FolderName;
                            var selectedFolder   = FolderList[selectedFolderId];

                            ++selectedFolder.ItemCount;
                            selectedEmail.CustomFolderName = selectedFolderId;
                        }
                    }
                }
                else
                {
                    foreach (DataGridViewRow row in dataGridViewEmails.SelectedRows)
                    {
                        if (CurrentView == EmailView.Inbox)
                        {
                            var selectedEmail = ReceivedEmails[(string)row.Cells[0].Value];

                            var selectedFolderName = FolderList.FirstOrDefault(x => x.Value.FolderName == e.ClickedItem.Text).Value.FolderName;
                            var selectedFolder     = FolderList[selectedFolderName];

                            if (EmailCollection.ContainsKey(selectedEmail.Id))
                            {
                                MessageBox.Show("This email already exists in collection.", "Moving failed");
                                return;
                            }

                            var email = MailReceiver.GetEmail(EmailType.Inbox, selectedEmail.UniqueId);
                            ++selectedFolder.ItemCount;
                            EmailCollection.TryAdd(selectedEmail.Id,
                                                   new CollectionEmail
                            {
                                Id               = selectedEmail.Id,
                                From             = selectedEmail.From,
                                To               = selectedEmail.To,
                                Subject          = selectedEmail.Subject,
                                TextBody         = email.TextBody,
                                HtmlBody         = email.HtmlBody,
                                Date             = selectedEmail.ArrivalTime,
                                CustomFolderName = selectedFolderName,
                                OriginalFolder   = EmailType.Inbox,
                            });
                            MailReceiver.DeleteEmail(EmailType.Inbox, selectedEmail.UniqueId);
                        }
                        else if (CurrentView == EmailView.SentEmails)
                        {
                            var selectedEmail      = SentEmails[(string)row.Cells[0].Value];
                            var selectedFolderName = FolderList.FirstOrDefault(x => x.Value.FolderName == e.ClickedItem.Text).Value.FolderName;
                            var selectedFolder     = FolderList[selectedFolderName];

                            if (EmailCollection.ContainsKey(selectedEmail.Id))
                            {
                                MessageBox.Show("This email already exists in collection.", "Moving failed");
                                return;
                            }

                            ++selectedFolder.ItemCount;
                            var email = MailReceiver.GetEmail(EmailType.SentEmails, selectedEmail.UniqueId);
                            ++selectedFolder.ItemCount;
                            EmailCollection.TryAdd(selectedEmail.Id,
                                                   new CollectionEmail
                            {
                                Id               = selectedEmail.Id,
                                From             = selectedEmail.From,
                                To               = selectedEmail.To,
                                Subject          = selectedEmail.Subject,
                                TextBody         = email.TextBody,
                                HtmlBody         = email.HtmlBody,
                                Date             = selectedEmail.SentTime,
                                CustomFolderName = selectedFolderName,
                                OriginalFolder   = EmailType.SentEmails,
                            });
                            MailReceiver.DeleteEmail(EmailType.SentEmails, selectedEmail.UniqueId);
                        }
                    }
                }

                this.Invoke((Action)(() => toolStripButtonRefresh.PerformClick()));
            });
        }
예제 #2
0
        public void Initialize(EmailCollection emails)
        {
            this.emails = emails;

            grid.Columns[1].Visible = false;
        }