public partial class ForgotPassword : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnPass_Click(object sender, EventArgs e)
{
//Create Connection String And SQL Statement
string strConnection = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
string strSelect = "SELECT UserName,Password FROM Users WHERE Email = @Email";
SqlConnection connection = new SqlConnection(strConnection);
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = strSelect;
SqlParameter email = new SqlParameter("@Email", SqlDbType.VarChar, 50);
email.Value = txtEmail.Text.Trim().ToString();
command.Parameters.Add(email);
//Create Dataset to store results and DataAdapter to fill Dataset
DataSet dsPwd = new DataSet();
SqlDataAdapter dAdapter = new SqlDataAdapter(command);
connection.Open();
dAdapter.Fill(dsPwd);
connection.Close();
if(dsPwd.Tables[0].Rows.Count > 0 )
{
MailMessage loginInfo = new MailMessage();
loginInfo.To.Add(txtEmail.Text.ToString());
loginInfo.From = new MailAddress("YourID@gmail.com");
loginInfo.Subject = "Forgot Password Information";
loginInfo.Body = "Username: " + dsPwd.Tables[0].Rows[0]["UserName"] + "<br /><br />Password: " + dsPwd.Tables[0].Rows[0]["Password"] + "<br /><br />";
loginInfo.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("YourGmailID@gmail.com", "YourGmailPassword");
smtp.Send(loginInfo);
lblMessage.Text = "Password is sent to you email id,you can now <a href='Login.aspx'>Login</a>";
}
else
{
lblMessage.Text = "Email Address Not Registered";
}
}
}
我遇到错误smtpException未被用户代码处理......如何解决?
答案 0 :(得分:2)
很简单,写一些处理它的用户代码!
如果您不熟悉Try..Catch块,我建议您对它们进行一些阅读,并使用它们(如果适用)来处理异常情况(即邮件服务器处于脱机状态,网络连接问题,密码到期)。
导致您的异常的代码很可能是这一行,它应该为您提供一个起点:
smtp.Send(loginInfo);
答案 1 :(得分:0)
您应该在用户代码中处理异常:
try
{
smtp.Send(loginInfo);
}
catch (Exception ex)
{
//Handle your exception here
lblMessage.Text = "Oeps, something when wrong when we tried to send the email";
return;
}
答案 2 :(得分:0)
问题是你使用了错误的端口号。适用于Gmail over SSL。来自documentation:
Outgoing Mail (SMTP) Server - requires TLS3 or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
当您将EnableSsl
选项设置为true时,您的端口号应设置为465
。
答案 3 :(得分:-1)
错误:邮件未发送 - smtp异常未被用户代码
处理if (ModelState.IsValid)
{
try{
string from = "abcd@gmail.com";
using (MailMessage mail = new MailMessage(from, obj.Idemail))
{
mail.Subject = "Admin";
mail.Body = "Registration successful!";
mail.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential networkCredential = new NetworkCredential(from, "pswd");
smtp.UseDefaultCredentials = true;
smtp.Credentials = networkCredential;
smtp.Port = 587;
smtp.Host = "localhost";
smtp.Send(mail);
ViewBag.Message = "Password Sent through mail. Please chack password in your account and signup.";
}
}
catch (Exception ex)
{
ViewBag.Message = "Error occur for sending data";
}
}
else
{
return Json("Invalid Information!", JsonRequestBehavior.AllowGet);
}