Функция SMTP не будет отправлять

#smtp

#smtp

Вопрос:

Я создал код, в котором пользователь вводит адрес электронной почты, который затем будет сверен с базой данных и подтвержден его частью этой базы данных. Эта часть работает, а также гарантирует, что пользователь вводит данные в текстовое поле. То, что я не могу заставить работать, — это чтобы приложение отправляло электронное письмо. Я пробовал несколько версий, переделывая ее каждый раз, и я пробовал разные порты для отправки электронной почты. Несколько портов функционируют и пытаются отправить электронное письмо до появления ошибки catch, в которой говорится, что электронное письмо не удалось отправить. Если у кого-нибудь есть идея, пожалуйста, дайте мне знать. Спасибо!

Вот код, который я использую, когда пытаюсь отправить электронное письмо;

 string mail = txtEmail.Text;
                     
            SqlDataAdapter adapt = new SqlDataAdapter("Select COUNT(*) FROM AdminLogin where AdminEmail='"   mail   "'", strcon);
            DataTable tab = new DataTable();
            adapt.Fill(tab);

            strcon.Open();

            string email = "Select AdminEmail FROM AdminLogin where AdminEmail='"   mail   "'";
            SqlCommand comm = new SqlCommand(email, strcon);

            SqlDataReader reader = comm.ExecuteReader();
            Regex emailregex = new Regex(@"[a-z0-9!#$%amp;'* /=?^_{|}~] (?:.[a-z0-9!!#$%amp;'* /=?)^_{|}~-] )");
            Random rand = new Random();
            randomcode = (rand.Next(999999)).ToString();

            if (txtEmail.Text != "")
            {
                if (emailregex.IsMatch(mail))
                {
                    if (reader.Read())
                    {
                        using (SmtpClient smtp = new SmtpClient("smtp.gmail.com"))
                        {
                          
                                string from, to;
                                from = "apmckee11@gmail.com";
                                to = (txtEmail.Text).ToString();
                                MailMessage mess = new MailMessage();
                                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                            NetworkCredential NC = new NetworkCredential
                            {
                                UserName = "apmckee11@gmail.com",
                                Password = "Password"
                            };
                            mess.To.Add(to);
                                mess.From = new MailAddress(from);
                                mess.Body = ("Your Reset Code is :"   randomcode);
                                mess.Subject = "Password reseting code!";
                                mess.IsBodyHtml = true;
                                smtp.Host = "smtp.gmail.com";
                                smtp.UseDefaultCredentials = true;
                            smtp.Credentials = NC;                         
                                smtp.EnableSsl = true;
                                smtp.Timeout = 60;
                                smtp.Port = 587;
                                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                            try 
                            { 
                                smtp.Send(mess);
                                lblSent.Visible = true;

                            }
                            catch (Exception ex)
                            {
                                lblFail.Visible = true;
                            }
                        }

                    }
                    else
                    {
                        lblWrong.Visible = true;
                    }
                }
                else
                {
                    lblWrong.Visible = true;
                }
            }
            else
            {
                lblMissing.Visible = true;
            }
  

Ответ №1:

Я предполагаю, что вы используете C # и эту библиотеку.

Попробуйте добавить это в свой код, и сообщение об ошибке должно объяснить, в чем проблема. Обновите свой вопрос полученным результатом.

 catch (Exception ex)
    {
        Console.WriteLine("Exception caught in CreateTestMessage2(): {0}",
            ex.ToString());
    }
  

Кстати, если вы используете эту библиотеку, вам следует переключиться на MailKit, потому что smtp устарел, как указано в документации.

Комментарии:

1. Да, я использую C #. Я должен был упомянуть об этом раньше. Я пробовал это, и сегодня я просмотрел различные формы этого метода, пытаясь получить результат, но я не получаю никаких результатов. Я добавил код выше и другие способы, пытающиеся отобразить исключение ошибки. я не уверен, что я делаю неправильно. я продолжу работать над этим, но если у кого-нибудь еще есть идея, я был бы признателен за помощь.