示例#1
0
        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);
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        // 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;
            }
        }