Esempio n. 1
0
        private void removeServersBtn_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < serversTable.Rows.Count; i++)
            {
                var selected = (bool)serversTable.Rows[i].Cells["selectedServerCol"].EditedFormattedValue;
                var domain   = (string)serversTable.Rows[i].Cells["domainCol"].Value;

                if (selected)
                {
                    DBServers.Remove(DBConnection.Connection, domain);
                }
            }

            updateServersWorker.RunWorkerAsync();
        }
Esempio n. 2
0
        private void signInBtn_Click(object sender, EventArgs e)
        {
            var        email    = emailTxt.Text.Trim(' ');
            var        password = passwordTxt.Text;
            ServerInfo mailServer;
            UserInfo   user = new UserInfo();
            int        serverId;

            if (string.IsNullOrEmpty(email))
            {
                checkInputPrv.SetError(emailTxt, "Заполните данное поле");
                return;
            }

            if (string.IsNullOrEmpty(password))
            {
                checkInputPrv.SetError(passwordTxt, "Заполните данное поле");
                return;
            }

            if (!CheckHelper.IsValidEmail(email))
            {
                checkInputPrv.SetError(emailTxt, "Неверный адрес");
                return;
            }

            var domain = AuthHelper.GetDomain(emailTxt.Text);

            mailServer = DBServers.GetServerInfo(DBConnection.Connection, domain);

            // Проверка поддерживаемых серверов

            if (mailServer == null) // Если не нашли соответствующий сервер
            {
                MessageBox.Show("Данный сервер не поддерживается на данный момент");
                return;
            }

            serverId = (int)mailServer.Id;

            // Проверка соединения если нашли поддерживаемый сервер

            if (isNetwork())    // Если есть соединение
            {
                try
                {
                    using (var client = new SmtpClient())
                    {
                        client.ServerCertificateValidationCallback = (s, c, h, ex) => true;
                        client.Connect(mailServer.SmtpHost, (int)mailServer.SmtpPort, mailServer.IsSsl);
                        client.Authenticate(emailTxt.Text, passwordTxt.Text);
                        client.Disconnect(true);

                        // Регистрируем или перезаписываем пользователя в базе данных

                        user = DBUsers.AuthUser(DBConnection.Connection, email, password, serverId);
                    }
                }
                catch (SQLiteException)
                {
                    checkInputPrv.SetError(passwordTxt, "Неверный email или пароль");
                    return;
                }
            }
            else    // Если всё-таки нет соединения
            {
                // Проверяем наличие данного пользователя в БД
                // Если есть, то авторизуемся локально и загружаем письма
                // Если нет, то нужно вывести ошибку

                if (DBUsers.GetLoginAccount(DBConnection.Connection, email, password, serverId) != null)
                {
                    user = DBUsers.AuthUser(DBConnection.Connection, email, password, serverId);
                }
                else
                {
                    checkInputPrv.SetError(emailTxt, "Нет соединения с интернетом, а также локальная " +
                                           "учётная запись с такими данными не существует");
                    return;
                }
            }

            passwordTxt.Text = "";
            Hide();
            new ClientForm(user).ShowDialog(this);
            Show();
        }
Esempio n. 3
0
 private void updateServersWorker_DoWork(object sender, DoWorkEventArgs e)
 {
     e.Result = DBServers.GetServers(DBConnection.Connection);
 }
Esempio n. 4
0
        private void addServerBtn_Click(object sender, EventArgs e)
        {
            var        domain   = domainTxt.Text.Trim(' ');
            var        smtpHost = smtpHostTxt.Text.Trim(' ');
            var        smtpPort = smtpPortTxt.Text.Trim(' ');
            var        imapHost = imapHostTxt.Text.Trim(' ');
            var        imapPort = imapPortTxt.Text.Trim(' ');
            var        pop3Host = pop3HostTxt.Text.Trim(' ');
            var        pop3Port = pop3PortTxt.Text.Trim(' ');
            ServerInfo newServer;
            int        smtp;
            int        imap;
            int        pop3;

            if (string.IsNullOrEmpty(domain))
            {
                checkInputPrv.SetError(domainTxt, "Заполните данное поле");
                return;
            }

            if (string.IsNullOrEmpty(smtpHost))
            {
                checkInputPrv.SetError(smtpHostTxt, "Заполните данное поле");
                return;
            }

            if (string.IsNullOrEmpty(smtpPort) | !int.TryParse(smtpPort, out smtp))
            {
                checkInputPrv.SetError(smtpPortTxt, "Заполните данное поле корректно");
                return;
            }

            if (string.IsNullOrEmpty(imapHost))
            {
                checkInputPrv.SetError(imapHostTxt, "Заполните данное поле");
                return;
            }

            if (string.IsNullOrEmpty(imapPort) | !int.TryParse(imapPort, out imap))
            {
                checkInputPrv.SetError(imapPortTxt, "Заполните данное поле корректно");
                return;
            }

            if (string.IsNullOrEmpty(pop3Host))
            {
                checkInputPrv.SetError(pop3HostTxt, "Заполните данное поле");
                return;
            }

            if (string.IsNullOrEmpty(pop3Port) | !int.TryParse(pop3Port, out pop3))
            {
                checkInputPrv.SetError(pop3PortTxt, "Заполните данное поле корректно");
                return;
            }

            newServer = new ServerInfo()
            {
                Domain   = domain,
                SmtpHost = smtpHost,
                SmtpPort = smtp,
                ImapHost = imapHost,
                ImapPort = imap,
                Pop3Host = pop3Host,
                Pop3Port = pop3,
                IsSsl    = sslCheck.Checked
            };

            if (!DBServers.Add(DBConnection.Connection, newServer))
            {
                checkInputPrv.SetError(domainTxt, "Сервер уже существует");
                return;
            }

            updateServersWorker.RunWorkerAsync();
        }