private void btnTestMailSettings_Click(object sender, EventArgs e)
        {
            this.saveEmailSettings();

            SMTPSetting EmailSettings;

            using (var Dbconnection = new MCDEntities())
            {
                EmailSettings = (from a in Dbconnection.SMTPSettings
                                 select a).FirstOrDefault <SMTPSetting>();
            };
            lblCheckingConnection.Visible = true;
            picConnectionPassed.Visible   = false;

            if (SmtpHelper.TestConnection(EmailSettings.SMTPHost, EmailSettings.PortNumber))
            {
                lblCheckingConnection.Visible = false;
                picConnectionPassed.Visible   = true;
            }
            else
            {
                lblCheckingConnection.Visible = false;
                picConnectionPassed.Visible   = false;
            }
        }
Beispiel #2
0
        public async Task UpdateConfiguration(SmtpConfiguration configuration)
        {
            PropertyInfo[] props = configuration.GetType().GetProperties();
            foreach (var prop in props)
            {
                Config config = context.Configs.Where(x => x.Key == prop.Name).FirstOrDefault();
                if (config == null)
                {
                    config = new Config
                    {
                        Key   = prop.Name,
                        Value = (string)prop.GetValue(configuration)
                    };
                    context.Configs.Add(config);
                }
                else
                {
                    config.Value = (string)prop.GetValue(configuration);
                    context.Configs.Update(config);
                }
            }

            bool connected = SmtpHelper.TestConnection(configuration.Host, int.Parse(configuration.Port));

            if (!connected)
            {
                throw new FormMgrException("Smtp connection failed. Please enter a valid configuration.");
            }

            await context.SaveChangesAsync();
        }
Beispiel #3
0
        /// <summary>
        /// Run the health check.
        /// </summary>
        /// <param name="context">The context.</param>
        public void Test(ITestContext context)
        {
            var mailSettings = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
                               .GetSectionGroup(@"system.net/mailSettings") as MailSettingsSectionGroup;

            try
            {
                if (!SmtpHelper.TestConnection(mailSettings))
                {
                    Assert.Fails(Labels.SmtpTestFailure);
                }
            }
            catch (Exception ex)
            {
                Assert.Fails(Labels.SmtpTestException, ex.Message);
            }
        }
        private void ReadyButton_Clicked(object sender, EventArgs e)
        {
            BackgroundWorker checkWorker = new BackgroundWorker();

            DoWorkEventHandler doWorkEvent = null;

            doWorkEvent = (s, ea) =>
            {
                try
                {
                    string address    = "";
                    string name       = "";
                    string login      = "";
                    string password   = "";
                    bool   noPassword = false;
                    string imapHost   = "";
                    string imapPort   = "";
                    bool   imapUseSsl = false;
                    string smtpHost   = "";
                    string smtpPort   = "";
                    bool   smtpUseSsl = false;

                    Dispatcher.Invoke(() =>
                    {
                        loadingOverlay.Visibility = Visibility.Visible;
                        address    = AddressTextBox.Text;
                        name       = NameTextBox.Text;
                        login      = LoginTextBlock.Text;
                        password   = PasswordTextBlock.Text;
                        noPassword = NoPasswordSaveCheckBox.Selected;
                        imapHost   = ImapHostTextBlock.Text;
                        imapPort   = ImapPortTextBlock.Text;
                        imapUseSsl = ImapSslCheckBox.Selected;
                        smtpHost   = SmtpHostTextBlock.Text;
                        smtpPort   = SmtpPortTextBlock.Text;
                        smtpUseSsl = SmtpSslCheckBox.Selected;
                    });

                    if (
                        String.IsNullOrWhiteSpace(address) ||
                        (!noPassword &&
                         (String.IsNullOrWhiteSpace(login) ||
                          String.IsNullOrWhiteSpace(password))) ||
                        String.IsNullOrWhiteSpace(imapHost) ||
                        String.IsNullOrWhiteSpace(imapPort) ||
                        String.IsNullOrWhiteSpace(smtpHost) ||
                        String.IsNullOrWhiteSpace(smtpPort)
                        )
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Uzupełnij dane";
                        });
                        ea.Result = false;
                        return;
                    }

                    Regex portRegex = new Regex("^[0-9]+$");

                    if (!portRegex.IsMatch(imapPort) ||
                        !portRegex.IsMatch(smtpPort) ||
                        !StringHelper.IsValidEmail(address))
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Dane nie mają poprawnego formatu";
                        });
                        ea.Result = false;
                        return;
                    }

                    ImapClient client;
                    client = EmailHelper.ConnectToServer(imapHost, Convert.ToInt32(imapPort),
                                                         imapUseSsl);

                    if (client == null)
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Nie można połączyć się z serwerem poczty przychodzącej";
                        });
                        ea.Result = false;
                        return;
                    }

                    if (!SmtpHelper.TestConnection(smtpHost, Convert.ToInt32(smtpPort)))
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Nie można połączyć się z serwerem poczty wychodzącej";
                        });
                        ea.Result = false;
                        return;
                    }

                    if (!NoPasswordSaveCheckBox.Selected)
                    {
                        if (!EmailHelper.AuthenticateClient(client, login, password))
                        {
                            Dispatcher.Invoke(() =>
                            {
                                loadingOverlay.Visibility = Visibility.Collapsed;
                                ErrorTextBlock.Text       = "Login lub hasło są niepoprawne";
                            });
                            ea.Result = false;
                            return;
                        }
                        ea.Result = true;
                    }
                    else
                    {
                        ea.Result = true;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            };

            RunWorkerCompletedEventHandler completed = null;

            completed = (s, ea) =>
            {
                loadingOverlay.Visibility = Visibility.Collapsed;

                if (Convert.ToBoolean(ea.Result))
                {
                    NewEmailAddressEventArgs eventArgs = new NewEmailAddressEventArgs()
                    {
                        Address          = AddressTextBox.Text,
                        Login            = LoginTextBlock.Text,
                        UseLoginPassword = !NoPasswordSaveCheckBox.Selected,
                        Password         = PasswordTextBlock.Text,
                        ImapHost         = ImapHostTextBlock.Text,
                        ImapPort         = Convert.ToInt32(ImapPortTextBlock.Text),
                        ImapUseSsl       = ImapSslCheckBox.Selected,
                        SmtpHost         = SmtpHostTextBlock.Text,
                        SmtpPort         = Convert.ToInt32(SmtpPortTextBlock.Text),
                        SmtpUseSsl       = SmtpSslCheckBox.Selected,
                        Name             = NameTextBox.Text
                    };

                    ReadyButtonClicked?.Invoke(this, eventArgs);
                }

                checkWorker.DoWork             -= doWorkEvent;
                checkWorker.RunWorkerCompleted -= completed;
            };

            ErrorTextBlock.Text = "";

            if (_parent.EmailClients != null)
            {
                if (_parent.EmailClients.Any(obj => obj.Address == AddressTextBox.Text))
                {
                    ErrorTextBlock.Text = "Adres e-mail już istnieje";
                }
                else
                {
                    checkWorker.DoWork             += doWorkEvent;
                    checkWorker.RunWorkerCompleted += completed;
                    checkWorker.RunWorkerAsync();
                }
            }
        }