发送忘记密码至电子邮件Asp.net代码错误

时间:2019-01-17 06:50:51

标签: c# asp.net smtpclient

我正在尝试编写代码以通过电子邮件发送忘记的密码,因此,当用户单击“忘记密码”按钮时,应该将密码发送到他们的电子邮件...但是会出现此错误

  

“ /”应用程序中的服务器错误。 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

     

使用32个字节的字符对gmail-smtp-msa.l.google.com [64.233.184.108]执行Ping操作   数据:来自64.233.184.108的回复:字节= 32时间= 85ms TTL = 37来自   64.233.184.108:字节= 32时间= 91ms TTL = 37来自64.233.184.108的回复:字节= 32时间= 86ms TTL = 37来自64.233.184.108的回复:字节= 32   时间= 85ms TTL = 37

     

64.233.184.108的Ping统计信息:       数据包:已发送= 4,已接收= 4,丢失= 0(丢失0%),大约往返时间(以毫秒为单位):       最小值= 85毫秒,最大值= 91毫秒,平均值= 86毫秒

2 个答案:

答案 0 :(得分:0)

当您尝试从其他时区或IP地址计算机登录时,通常会发生这种情况。生产服务器和您使用的邮件ID都在不同的时区。选择以下任一解决方案:

1)通过远程访问登录生产服务器,然后使用您的凭据登录gmail。他们将要求确认,确认并注销。

或者2)登录gmail,然后按照Link并选择review this activity并执行适当的操作。

我通过此链接Gmail Error :The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required

找到了这个

答案 1 :(得分:0)

问题是我的电子邮件的密码错误,nc.Password = "133"; 我认为正确的密码来自数据库,而不是电子邮件的真实密码。 所以上面的代码是100%正确的。希望有人