コード例 #1
0
        private void OnMailStringSubmit_Click(object sender, RoutedEventArgs e)
        {
            // something is being processed
            if (this.worker != null)
            {
                return;
            }

            ClearTrace();

            this.worker = new BackgroundWorker();
            this.worker.WorkerReportsProgress      = true;
            this.worker.WorkerSupportsCancellation = false;
            this.worker.DoWork             += new DoWorkEventHandler(DoMailSubmit);
            this.worker.ProgressChanged    += new ProgressChangedEventHandler(OnProgressChanged);
            this.worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(OnWorkerCompleted);

            MailSubmitData data = new MailSubmitData();

            data.StartCommand = this.Start_1.SelectedIndex == 0 ? "EHLO" : "HELO";
            data.ServerAddess = this.ServerAddress.Text;
            data.ServerPort   = this.ServerPort.Text;
            data.FromAddress  = this.FromAddress_1.Text;
            data.FromOption   = this.FromOption_1.Text;
            data.ToAddress    = this.ToAddress_1.Text;
            data.ToOption     = this.ToOption_1.Text;
            data.MailData     = this.MailData.Text;
            data.DataOption   = this.DataOption_1.Text;
            data.DotPad       = this.DotPad_1.IsChecked.HasValue ? this.DotPad_1.IsChecked.Value : true;

            this.worker.RunWorkerAsync(data);
        }
コード例 #2
0
        private void OnMailRawSubmit_Click(object sender, RoutedEventArgs e)
        {
            // something is being processed
            if (this.worker != null)
            {
                return;
            }

            ClearTrace();

            this.worker = new BackgroundWorker();
            this.worker.WorkerReportsProgress      = true;
            this.worker.WorkerSupportsCancellation = false;
            this.worker.DoWork             += new DoWorkEventHandler(DoMailRawSubmit);
            this.worker.ProgressChanged    += new ProgressChangedEventHandler(OnProgressChanged);
            this.worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(OnWorkerCompleted);

            MailSubmitData data = new MailSubmitData();

            data.ServerAddess = this.ServerAddress.Text;
            data.ServerPort   = this.ServerPort.Text;
            data.RawData      = this.ContentData.Text;

            this.worker.RunWorkerAsync(data);
        }
コード例 #3
0
        private void DoMailRawSubmit(object sender, DoWorkEventArgs workArgs)
        {
            MailSubmitData data = workArgs.Argument as MailSubmitData;

            SendToServer(data.ServerAddess, data.ServerPort, data.RawData);
            AddTraceAsync(this.delim);
            Cleanup();
        }
コード例 #4
0
        private void DoMailSubmit(object sender, DoWorkEventArgs workArgs)
        {
            MailSubmitData data = workArgs.Argument as MailSubmitData;
            string         dataToSend;
            bool           success = true;

            if (success)
            {
                dataToSend = data.StartCommand;
                success    = SendToServer(data.ServerAddess, data.ServerPort, dataToSend);
                AddTraceAsync(this.delim);
            }

            if (success)
            {
                dataToSend = "MAIL FROM:" + data.FromAddress;
                if (!string.IsNullOrEmpty(data.FromOption))
                {
                    dataToSend += " " + data.FromOption;
                }
                success = SendToServer(data.ServerAddess, data.ServerPort, dataToSend);
                AddTraceAsync(this.delim);
            }

            if (success)
            {
                dataToSend = "RCPT TO:" + data.ToAddress;
                if (!string.IsNullOrEmpty(data.ToOption))
                {
                    dataToSend += " " + data.ToOption;
                }
                success = SendToServer(data.ServerAddess, data.ServerPort, dataToSend);
                AddTraceAsync(this.delim);
            }

            if (success)
            {
                dataToSend = "DATA";
                if (!string.IsNullOrEmpty(data.DataOption))
                {
                    dataToSend += " " + data.DataOption;
                }
                success = SendToServer(data.ServerAddess, data.ServerPort, dataToSend);
                AddTraceAsync(this.delim);
            }

            if (success)
            {
                AddTraceAsync(string.Format("Dot padding - {0}", data.DotPad));
                AddTraceAsync(this.delim);

                if (!string.IsNullOrEmpty(data.MailDataFile))
                {
                    byte[] mailBytes = File.ReadAllBytes(data.MailDataFile);
                    if (data.DotPad)
                    {
                        byte[] tmpBytes = DotPad(mailBytes);
                        mailBytes = tmpBytes;
                    }
                    success = SendToServer(data.ServerAddess, data.ServerPort, mailBytes, false);
                }
                else
                {
                    string[] mailParts = data.MailData.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                    foreach (string part in mailParts)
                    {
                        string tmpPart = part;
                        if (data.DotPad)
                        {
                            tmpPart = DotPad(part);
                        }
                        success = SendToServer(data.ServerAddess, data.ServerPort, tmpPart, false);
                        if (!success)
                        {
                            break;
                        }
                    }
                }
                AddTraceAsync(this.delim);
            }

            if (success)
            {
                dataToSend = ".";
                success    = SendToServer(data.ServerAddess, data.ServerPort, dataToSend);
                AddTraceAsync(this.delim);
            }

            Cleanup();
        }