Beispiel #1
0
        public MailMessage GetMessage(string id, EmailClient.MessageType type)
        {
            MailMessage message = null;

            switch (type)
            {
            case EmailClient.MessageType.Seen:
                SeenMessages.TryGetValue(id, out message);
                message = EmailClient.Instance.clients.imapClient.GetMessage(UInt32.Parse(id), true);
                break;

            case EmailClient.MessageType.Unseen:
                UnseenMessages.TryGetValue(id, out message);
                SeenMessages.TryAdd(id, message);
                UnseenMessages.TryRemove(id, out _);
                message = EmailClient.Instance.clients.imapClient.GetMessage(UInt32.Parse(id), true);
                break;

            case EmailClient.MessageType.Draft:
                DraftMessages.TryGetValue(id, out message);
                break;

            case EmailClient.MessageType.Sending:
                PendingMessages.TryGetValue(id, out message);
                break;

            default:
                return(message);
            }

            return(message);
        }
Beispiel #2
0
 private void sendingButton_Click(object sender, EventArgs e)
 {
     Invoke(new Action(() => {
         if (currentView != EmailClient.MessageType.Sending)
         {
             CleanView();
         }
         viewName.Text = "Sending queue";
         currentView   = EmailClient.MessageType.Sending;
         ShowMessages(EmailClient.MessageType.Sending, filterBox.Text);
     }));
 }
Beispiel #3
0
 private void draftButton_Click(object sender, EventArgs e)
 {
     Invoke(new Action(() => {
         if (currentView != EmailClient.MessageType.Draft)
         {
             CleanView();
         }
         viewName.Text = "Draft";
         currentView   = EmailClient.MessageType.Draft;
         ShowMessages(EmailClient.MessageType.Draft, filterBox.Text);
     }));
 }
Beispiel #4
0
 private void unseenButton_Click(object sender, EventArgs e)
 {
     Invoke(new Action(() => {
         if (currentView != EmailClient.MessageType.Unseen)
         {
             CleanView();
         }
         viewName.Text = "Unseen";
         currentView   = EmailClient.MessageType.Unseen;
         ShowMessages(EmailClient.MessageType.Unseen, filterBox.Text);
     }));
 }
Beispiel #5
0
 public Attachment GetAttachment(int index, string messageId, EmailClient.MessageType type)
 {
     try
     {
         var mess       = GetMessage(messageId, type);
         var attachment = mess.Attachments[index];
         return(attachment);
     }
     catch (Exception e)
     {
         MessageBox.Show($"Can't get attachment {e.Message}");
         return(null);
     }
 }
Beispiel #6
0
        private async void ShowMessages(EmailClient.MessageType type, string filter)
        {
            var list = await Task.Run(() => EmailClient.Instance.GetMessagesSorted(type, filter));

            Invoke(new Action(() => {
                messages.Items.Clear();
                if (list != null)
                {
                    foreach (var x in list)
                    {
                        messages.Items.Add(x.Value);
                    }
                }
            }));
        }
Beispiel #7
0
        public void DeleteMessage(string id, EmailClient.MessageType type)
        {
            try
            {
                switch (type)
                {
                case EmailClient.MessageType.Seen:
                    SeenMessages.TryRemove(id, out _);
                    EmailClient.Instance.clients.imapClient.DeleteMessage(UInt32.Parse(id));
                    break;

                case EmailClient.MessageType.Unseen:
                    UnseenMessages.TryRemove(id, out _);
                    SeenMessages.TryRemove(id, out _);
                    EmailClient.Instance.clients.imapClient.DeleteMessage(UInt32.Parse(id));
                    break;

                case EmailClient.MessageType.Draft:
                    DraftMessages.TryRemove(id, out _);
                    break;

                case EmailClient.MessageType.Sending:
                    if (PendingMessages.TryRemove(id, out _))
                    {
                        MessageBox.Show("Your message was canceled");
                    }
                    break;

                default:
                    return;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show($"Can't delete message {e.Message}");
            }
        }
Beispiel #8
0
        public IEnumerable <KeyValuePair <string, MessageBoxItem> > GetMessagesSorted(EmailClient.MessageType type, string filter)
        {
            if (messageWorker == null)
            {
                return(null);
            }

            SortedList <string, MessageBoxItem>        list = new SortedList <string, MessageBoxItem>();
            ConcurrentDictionary <string, MailMessage> store;

            switch (type)
            {
            case EmailClient.MessageType.Seen:
                store = messageWorker.SeenMessages;
                break;

            case EmailClient.MessageType.Unseen:
                store = messageWorker.UnseenMessages;
                break;

            case EmailClient.MessageType.Draft:
                store = messageWorker.DraftMessages;
                break;

            case EmailClient.MessageType.Sending:
                store = messageWorker.PendingMessages;
                break;

            default:
                return(null);
            }

            if (store != null)
            {
                foreach (var x in store)
                {
                    if (x.Value != null &&
                        (x.Value.Subject.ToLower().Contains(filter.ToLower()) ||
                         x.Value.From.ToString().ToLower().Contains(filter.ToLower())))
                    {
                        if (String.IsNullOrEmpty(x.Value.Subject))
                        {
                            x.Value.Subject = "(No Subject)";
                        }
                        var temp = new MessageBoxItem(x.Value.Subject, x.Key);
                        temp.attachments = x.Value.Attachments;
                        list.Add(temp.id, temp);
                    }
                }
            }

            var res = list.Reverse();

            return(res);
        }