private void SendMail(object paramter) { StringBuilder argv = new StringBuilder(); argv.Append(MailContent + " " + AccountInfo.Account + " " + ReceiveMail + " " + Subject); // 文件路径的数组,路径分隔符是/,相对或绝对都可以 //string[] paths = { "xxx/1.txt", "xxx/2.jpg" }; foreach (var file in files) { argv.Append(" \"" + file.MailFilePath.Replace("\\", "/") + "\""); } Process p = new Process(); p.StartInfo.FileName = "MimeWrapped.exe"; //需要执行的文件路径 p.StartInfo.UseShellExecute = false; //必需 p.StartInfo.RedirectStandardOutput = true; //输出参数设定 p.StartInfo.RedirectStandardInput = true; //传入参数设定 p.StartInfo.CreateNoWindow = true; p.StartInfo.Arguments = argv.ToString(); p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); p.Close(); MailUtil.LoginInfo info_smtp = new MailUtil.LoginInfo() { account = AccountInfo.Account, passwd = AccountInfo.Password, site = AccountInfo.SmtpHost }; MailUtil.MailInfo mail_info = new MailUtil.MailInfo() { from = AccountInfo.Account, to = ReceiveMail, cc = AccountInfo.Account, subject = "", body = output, }; Int32 result = MailUtil.login_send_mail_extern(info_smtp, mail_info); if (result == 200) { ShowDialog("发送成功"); ClearInfo(null); } else { ShowDialog("发送失败"); } Console.WriteLine(result); }
private async void ShowAddDialog() { DialogClosingEventHandler dialogClosingEventHandler = null; LoginController loginController = new LoginController { }; var result = await DialogHost.Show(loginController, "loginDialog", dialogClosingEventHandler); if (Equals(true, result)) { for (int i = 0; i < AccountInfos.Count; i++) { if (AccountInfos[i].Account == loginController.NameTextBox.Text) { MessageController messageController = new MessageController("此账号已添加,请勿重复添加"); await DialogHost.Show(messageController, "validDialog", dialogClosingEventHandler); return; } } Console.WriteLine("添加账户"); MailUtil.LoginInfo info_smtp = new MailUtil.LoginInfo() { account = loginController.NameTextBox.Text, passwd = loginController.FloatingPasswordBox.Password, site = loginController.SmtpHostTextBox.Text }; MailUtil.LoginInfo info_pop3 = new MailUtil.LoginInfo() { account = loginController.NameTextBox.Text, passwd = loginController.FloatingPasswordBox.Password, site = loginController.PopHostTextBox.Text, }; bool re1 = MailUtil.validate_account_smtp(info_smtp); bool re2 = !MailUtil.validate_account_pop3(info_pop3); Boolean isRight = MailUtil.validate_account_smtp(info_smtp) && (!MailUtil.validate_account_pop3(info_pop3)); //如果验证成功,则添加账号 if (isRight) { Console.WriteLine("验证成功"); AddAccount(loginController.NameTextBox.Text, loginController.FloatingPasswordBox.Password, loginController.PopHostTextBox.Text, loginController.SmtpHostTextBox.Text); } else { MessageController messageController = new MessageController("账号信息错误"); await DialogHost.Show(messageController, "validDialog", dialogClosingEventHandler); Console.WriteLine(isRight); } } }
private void Save_Mail() { AccountInfo a = AccountInfos[AccountSelectedIndex]; MailUtil.LoginInfo info_pop3 = new MailUtil.LoginInfo() { account = a.Account, passwd = a.Password, site = a.PopHost }; try { int num = MailUtil.get_num_mails(info_pop3); //info_pop3.account = "11"; Task[] tasks = new Task[num]; for (uint i = 1; i <= num; i++) { uint param = i; var tokenSource = new CancellationTokenSource(); var token = tokenSource.Token; tasks[i - 1] = WaitAsync(Task.Factory.StartNew(() => { int r = MailUtil.pull_save_mail(info_pop3, param); if (r != -1) { Console.WriteLine("Receive mail-{0} success", param); } else { Console.WriteLine("Receive mail-{0} fail", param); } }), TimeSpan.FromSeconds(4.5)); } Task.WaitAll(tasks, TimeSpan.FromSeconds(5.0)); // wait for 5 seconds Console.WriteLine("tasks all completed"); } catch (TimeoutException te) { Console.WriteLine("Timeout happened, msg:" + te.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
// switch mail user function private void ReceiveMail(object parameter) { Title = "收件箱"; Visibility = System.Windows.Visibility.Visible; AccountInfo a = AccountInfos[AccountSelectedIndex]; MailUtil.LoginInfo info_pop3 = new MailUtil.LoginInfo() { account = a.Account, passwd = a.Password, site = a.PopHost }; bool re = !MailUtil.validate_account_pop3(info_pop3); // for debug compare MailUtil.LoginInfo info_pop3_2 = new MailUtil.LoginInfo() { account = "*****@*****.**", passwd = "ybgissocute2020", site = "pop.163.com:110" }; bool rere = !MailUtil.validate_account_pop3(info_pop3_2); // account is invaliad if (!re) { // show tip and remove invalid account item DialogHost.Show(new ShowInvalidController(), null, null); //DialogHost.CloseDialogCommand.Execute(null, null); Console.WriteLine("Account Invalid !"); // delete account item and remove that in XML file also XMLOperation.DeleteAccouts(a); AccountInfos.RemoveAt(AccountSelectedIndex); return; } Content = new Frame { Content = new ReceiveMailController(AccountInfos[AccountSelectedIndex]) // don't flush }; }
private async void DeleteMail(object param, DialogClosingEventArgs args) { if (!((bool)args.Parameter) || CurrentMail == null) { return; } string filepath = CurrentMail.FilePath; MailUtil.LoginInfo info = new MailUtil.LoginInfo { account = account.Account, passwd = account.Password, site = account.PopHost }; try { Regex regex = new Regex(@"\w+@\w+.com-(\d+).mail.tmp"); string indexstr = regex.Match(filepath).Groups[1].Value; uint index = UInt32.Parse(indexstr); Console.WriteLine("Delete mail whose index = " + index); MailUtil.del_mail(info, index); // delete corresponding mail tmp file if (File.Exists(filepath)) { File.Delete(filepath); } // index reduce 1 if mail's original index greater than deleted one's string dir = Path.Combine(Directory.GetCurrentDirectory(), account.Account); foreach (string f in Directory.GetFiles(dir)) { Group g = regex.Match(f).Groups[1]; uint i = UInt32.Parse(g.Value); if (i > index) { string newFile = String.Concat(f.Substring(0, g.Index), i - 1, f.Substring(g.Index + g.Length)); File.Move(Path.Combine(dir, f), Path.Combine(dir, newFile)); } } // Flush binding item list DisplayMailItems = GetMailItems(account); // show snackbar TipMessage = "删除成功"; IsSnackActive = true; await Task.Delay(3000); IsSnackActive = false; } catch (Exception ex) { Console.WriteLine(ex.Message); // show snackbar TipMessage = "删除失败"; IsSnackActive = true; await Task.Delay(3000); IsSnackActive = false; } }