#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 #. Я должен был упомянуть об этом раньше. Я пробовал это, и сегодня я просмотрел различные формы этого метода, пытаясь получить результат, но я не получаю никаких результатов. Я добавил код выше и другие способы, пытающиеся отобразить исключение ошибки. я не уверен, что я делаю неправильно. я продолжу работать над этим, но если у кого-нибудь еще есть идея, я был бы признателен за помощь.