[英]Send forget password to email Asp.net code error
我正在尝试编写代码以通过电子邮件发送忘记的密码,因此当用户单击“忘记密码”按钮时,应该将密码发送到他们的电子邮件......但它会出现此错误
“/”应用程序中的服务器错误。 SMTP 服务器需要安全连接或客户端未通过身份验证。 服务器响应为:5.5.1 需要身份验证。 在描述中了解更多信息:在执行当前 Web 请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.Net.Mail.SmtpException:SMTP 服务器需要安全连接或客户端未通过身份验证。 服务器响应为:5.5.1 需要身份验证。 了解更多信息
源错误:
第 50 行:smtp.Send(ms);
源代码在这里:
protected void Buttonpsw_Click(object sender, EventArgs e)
{
string mainconn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
SqlConnection con = new SqlConnection(mainconn);
string sqlquery = "select Email,Password1 from [dbo].[Users1] where Email =@Email";
SqlCommand sqlcommand = new SqlCommand(sqlquery, con);
sqlcommand.Parameters.AddWithValue("@Email",Textemail.Text);
con.Open();
SqlDataReader sdr = sqlcommand.ExecuteReader();
if (sdr.Read())
{
string username = sdr["Email"].ToString();
string Password = sdr["Password1"].ToString();
MailMessage ms = new MailMessage("roqaia.alrfou@gmail.com",Textemail.Text);
ms.Subject = "Your password!";
ms.Body = string.Format("Hello : <h1>{0}</h1> is your Email ID <br/> Your Password is <h1>{1}</h1>",username,Password);
ms.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential nc = new NetworkCredential();
nc.UserName = "roqaia.alrfou@gmail.com";
nc.Password = "133";
smtp.UseDefaultCredentials = true;
smtp.Credentials = nc;
smtp.Port = 587;
smtp.Send(ms);
Labelmsg.Text = "Your Password has been sent to" + Textemail.Text;
Labelmsg.ForeColor = Color.Green;
}
else
{
Labelmsg.Text = Textemail.Text+" This Email ID isn't Exist! Please sign up";
Labelmsg.ForeColor = Color.Red;
}
Web 配置中的连接字符串具有以下代码:( Tracking_System 是我的数据库名称)
<connectionStrings>
<add name="dbconnection"
connectionString="server= USER-PC\SQL;Data
Source=localhost;Initial Catalog=Tracking_System;
Integrated Security=True;Pooling=False
; Trusted_Connection=True;"
providerName="System.data.sqlclient" />
</connectionStrings>
我试图在命令提示符下 ping smtp 它给出了这个:
C:\\WINDOWS\\system32>ping smtp.google.com Ping 请求找不到主机 smtp.google.com。 请检查名称并重试。
C:\\WINDOWS\\system32>ping smtp.gmail.com
ping gmail-smtp-msa.l.google.com [64.233.184.108] 有 32 个字节的数据: 来自 64.233.184.108 的回复:bytes=32 时间=85ms TTL=37 来自 64.233.184.108 的回复时间=9 bytes33ms TTL=37 来自 64.233.184.108 的回复:bytes=32 时间=86ms TTL=37 来自 64.233.184.108 的回复:bytes=32 时间=85ms TTL=37
64.233.184.108 的 Ping 统计数据:数据包:发送 = 4,接收 = 4,丢失 = 0(丢失 0%),以毫秒为单位的近似往返时间:最小值 = 85 毫秒,最大值 = 91 毫秒,平均值 = 86 毫秒
当您尝试从不同的时区或 IP 地址计算机登录时,通常会发生这种情况。 您的生产服务器和您使用的邮件 ID 位于不同的时区。 选择以下任一解决方案:
1) 通过远程访问登录到生产服务器,并使用您的凭据登录一次 gmail。 他们将要求确认,确认并注销。
或 2) 将 gmail 登录到您的本地计算机,点击此链接并选择查看此活动并采取适当的措施。
我通过此链接找到了Gmail 错误:SMTP 服务器需要安全连接或客户端未通过身份验证。 服务器响应为:5.5.1 Authentication Required
问题是我的邮箱密码错误, nc.Password = "133";
我认为正确的密码来自数据库而不是我电子邮件的真实密码。 所以上面的代码是 100% 正确的。希望有人需要它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.