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); }
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); })); }
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); })); }
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); })); }
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); } }
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); } } })); }
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}"); } }
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); }