public void RemoveDraft(string id) { if (string.IsNullOrEmpty(id)) { return; } //Get exist var existMail = DraftList.FirstOrDefault(item => { return(item.ID == id); }); if (existMail == null) { return; } //Delete Attachments string folder = DraftFolder.CombinePath(id); var dirInfo = new DirectoryInfo(folder); if (dirInfo.Exists) { dirInfo.Delete(true); } //Delete Mail Content DraftList.Remove(existMail); SerializeAssistant.Serialize(draftBinPath, DraftList); System.Diagnostics.Debug.WriteLine("Remove " + existMail.ID); }
private void DiscardDraft() { IsDraft = false; if (string.IsNullOrEmpty(MailMessage.ID)) { return; } string folder = DraftFolder.CombinePath(MailMessage.ID); var dirInfo = new DirectoryInfo(folder); if (dirInfo.Exists) { try { dirInfo.Delete(true); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); } } MainVm.RemoveDraft(MailMessage.ID); MailMessage.ID = null; Messenger.Default.Send(new DisplayMessage("Discard draft.", DisplayType.Toast)); Messenger.Default.Send(new NavigationMessage(), Tokens.Draft); }
public void UpdateDraft(string recipient, string subj, string message) { DraftFolder.Click(); DraftToUpdate.Click(); Text.Clear(); Text.SendKeys(message); Subject.Clear(); Subject.SendKeys(subj); }
public void CreateDraft(string recipient, string subj, string message) { DraftFolder.Click(); Compose.Click(); Recipients.SendKeys(recipient); Subject.SendKeys(subj); Text.SendKeys(message); Close.Click(); }
public string EnsureDraftCacheFolder(string messageid) { string path = DraftFolder.CombinePath(messageid); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } return(path); }
protected override void Init() { //Ensure local path created. DataFolder = AppDomain.CurrentDomain.BaseDirectory + "Data"; DraftFolder = DataFolder + "\\Draft"; InboxFolder = DataFolder + "\\Inbox"; draftBinPath = DraftFolder.CombinePath("Draft.bin"); UserBinPath = DataFolder.CombinePath("User.bin"); EnsureCreateFolder(DataFolder); EnsureCreateFolder(DraftFolder); EnsureCreateFolder(InboxFolder); EnsureCreateFile(UserBinPath); //Get stored data userAssistant = new UserAssistant(UserBinPath); var obj = SerializeAssistant.Deserialize(draftBinPath); if (null != obj) { BindingList <MailBase> drafts = null; drafts = obj as BindingList <MailBase>; if (drafts != null) { DraftList = drafts; } } UpdateSettings(UseImap); //Init commands. LoginCommand = new RelayCommand <object>(Login, o => { return(!(IsLogined || string.IsNullOrEmpty(UserAddress) || IsRequesting)); }); LoginIfAutoCommand = new RelayCommand <object>(CheckAutoLogin, o => !IsLogined); LogoutCommand = new RelayCommand(Logout, () => IsLogined); GetInboxMailCommand = new RelayCommand(GetInboxMail, () => IsLogined && !IsRequesting); ReplyCommand = new RelayCommand <object>(ReplyMailFrom); ForwardCommand = new RelayCommand <object>(ForwardTo); AddNewDraftCommand = new RelayCommand <object>(NavigateNewDraft); DeleteDraftCommand = new RelayCommand <object>(DeleteDraft); SaveAttachmentCommand = new RelayCommand <object>(SaveAttachmentAs); DeleteOutboxMailCommand = new RelayCommand <object>(DeleteOutboxMail); DeleteInboxMailCommand = new RelayCommand <object>(DeleteInboxMail, o => !IsRequesting); ForgetUserCommand = new RelayCommand <object>(RemoveLocalUserActon, o => IsLogined); RemoveUserFromRecentCommand = new RelayCommand <object>(RemoveUserFromRecentAction); NavigationInMainCommand = new RelayCommand <object>(Navigate); }
private void DeleteAttachment(object o) { //Validate basic info if (null == o) { return; } var fileName = o as string; if (null == fileName) { return; } if (!MailMessage.Attachments.Contains(fileName)) { return; } if (string.IsNullOrEmpty(MailMessage.ID)) { return; } //Check file string folder = DraftFolder.CombinePath(MailMessage.ID); string path = folder.CombinePath(fileName); if (File.Exists(path)) { try { File.Delete(path); MailMessage.Attachments.Remove(fileName); } catch (Exception e) { Messenger.Default.Send(new DisplayMessage(e.Message, DisplayType.Toast)); } } }
private async void SendMail(object o) { if (!MainVm.IsLogined) { Messenger.Default.Send(new DisplayMessage("Require Login.", "Please Login First!")); return; } //Addresses Validation var error = string.Empty; var msg = new MailMessage(); //Ensure To if (!AddAddresses(MailMessage.ToAddresses, msg.To, ref error)) { if (!string.IsNullOrEmpty(error)) { Messenger.Default.Send(new DisplayMessage("Check recipients", error)); return; } else if (!IsCCOrBccEnabled) { return; } } //Ensure CC or Bcc if (IsCCOrBccEnabled && ((!string.IsNullOrEmpty(MailMessage.CCAddresses) && !AddAddresses(MailMessage.CCAddresses, msg.CC, ref error)) || (!string.IsNullOrEmpty(MailMessage.BccAddresses) && !AddAddresses(MailMessage.BccAddresses, msg.Bcc, ref error)))) { Messenger.Default.Send(new DisplayMessage("Check recipients", error)); return; } //Ensure valid recipients if (msg.To.Count == 0 && msg.CC.Count == 0 && msg.Bcc.Count == 0) { Messenger.Default.Send(new DisplayMessage("No valid recipients", "Please input recipients")); return; } //Get Document to send var doc = o as FlowDocument; if (doc == null) { Messenger.Default.Send(new DisplayMessage("Check input", "Error body.")); return; } string bodyHtml = doc.ToHtmlString(); //Initilize mail message msg.From = new MailAddress(FromAddress, DisplayName); msg.Priority = Priority; msg.Subject = MailMessage.Subject; msg.Body = bodyHtml; msg.BodyEncoding = Encoding; msg.IsBodyHtml = true; //Add Attachments string folder = DraftFolder.CombinePath(MailMessage.ID); if (MailMessage.Attachments.Count > 0) { string fileCache = null; foreach (var attachment in MailMessage.Attachments) { fileCache = folder.CombinePath(attachment); if (!File.Exists(fileCache)) { continue; } msg.Attachments.Add(new Attachment(fileCache)); } } //Initilize SmtpClient var client = new SmtpClient(); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Host = Settings.Host; client.Port = Settings.Port; client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential(FromAddress, Password); client.EnableSsl = Settings.EnableSsl; await Task.Run(() => { MainVm.IsRequesting = true; try { client.Send(msg); IsDraft = false; Messenger.Default.Send(new NavigationMessage(), Tokens.Draft); Messenger.Default.Send(new DisplayMessage("Send Successful!")); } catch (Exception e) { Messenger.Default.Send(new DisplayMessage("Send Error", e.Message)); System.Diagnostics.Debug.WriteLine(e.Message); } finally { if (client != null) { client.Dispose(); } MainVm.IsRequesting = false; } }); }