0
votes

Below is my code for sending confirmation link to mail and I am getting errors like Failure sending mail.

After sending confirmation link to email then user will reset the password.

 string uniqueCode = string.Empty;
    SqlCommand cmd = new SqlCommand();
    SqlDataReader dr;
    try
    {
        SqlConnection con = new      SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
        if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        // get the records matching the supplied username or email id.         
        cmd = new SqlCommand("select * from Tbl_Login where UserName COLLATE Latin1_general_CS_AS=@username or EmailId COLLATE Latin1_general_CS_AS=@emailId", con);

        cmd.Parameters.AddWithValue("@username", Convert.ToString(txtUserName.Text.Trim()));
        cmd.Parameters.AddWithValue("@emailId", Convert.ToString(txtEmailId.Text.Trim()));
        dr = cmd.ExecuteReader();
        cmd.Dispose();
        if (dr.HasRows)
        {
            dr.Read();
            //generate unique code
            uniqueCode = Convert.ToString(System.Guid.NewGuid());
            //Updating an unique random code in then UniquCode field of the database table
            cmd = new SqlCommand("update Tbl_Login set Uniquecode=@uniqueCode where UserName=@username or EmailId=@emailid", con);
            cmd.Parameters.AddWithValue("@uniqueCode", uniqueCode);
            cmd.Parameters.AddWithValue("@username", txtUserName.Text.Trim());
            cmd.Parameters.AddWithValue("@emailid", txtEmailId.Text.Trim());

            StringBuilder strBody = new StringBuilder();
            //Passing emailid,username and generated unique code via querystring. For testing pass your localhost number and while making online pass your domain name instead of localhost path.
            strBody.Append("<a href=http://localhost:2464/SampleApplication/ResetPassword.aspx?emailId=" + txtEmailId.Text + "&uName=" + txtUserName.Text + "&uCode=" + uniqueCode + ">Click here to change your password</a>");
            // sbody.Append("&uCode=" + uniqueCode + "&uName=" + txtUserName.Text + ">Click here to change your password</a>");

            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage("[email protected]", dr["EmailId"].ToString(), "Reset Your Password", strBody.ToString());
            //pasing the Gmail credentials to send the email

            System.Net.NetworkCredential mailAuthenticaion = new System.Net.NetworkCredential("[email protected]", "SenderPassword");

            System.Net.Mail.SmtpClient mailclient = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
            mailclient.EnableSsl = true;
            mailclient.UseDefaultCredentials = false;
            mailclient.Credentials = mailAuthenticaion;
            mail.IsBodyHtml = true;
            mailclient.Send(mail);
            dr.Close();
            dr.Dispose();
            cmd.ExecuteReader();
            cmd.Dispose();
            con.Close();
            lblStatus.Text = "Reset password link has been sent to your email address";
            txtEmailId.Text = string.Empty;
            txtUserName.Text = string.Empty;
        }
        else
        {
            lblStatus.Text = "Please enter valid email address or username";
            txtEmailId.Text = string.Empty;
            txtUserName.Text = string.Empty;
            con.Close();
            return;
        }
    }
    catch (Exception ex)
    {
        lblStatus.Text = "Error Occured: " + ex.Message.ToString();
    }
    finally
    {
        cmd.Dispose();
    }

Web. con file code given below and don't know its correct.

   <system.net>
     <mailSettings>
     <smtp from="[email protected]">
      <network host="somesmtpserver" port="25" userName="name"         
                                 password="pass" defaultCredentials="true" />
  </smtp>
</mailSettings>

1
Which error do you get? Have you tried to lower the security on the gmail account settings?FeliceM
Failure sending mail error and I don't know what happened, its a problem of antivirus or gmail account setting don't know how to do.mohdmazharkhan
Failure sending mail. @FeliceMmohdmazharkhan
This method is Updating the database, sending an email and updating the UI...? You might want to break this out and focus on each task with individual methods. Have you inspected the Stack Trace of the Exception?Christian Phillips
Access your gamail account from the browser and check whats happened to your email. Most probably because you are sending email using an external script, the mail is blocked by gmail security. If so, just set "less secure" in the security settings and it should work. I had the same problem with the same code.FeliceM

1 Answers

0
votes
MailMessage mail = new MailMessage();
mail.To.Add([email protected]);
mail.From = new MailAddress("[email protected]");
mail.CC.Add("[email protected]");
mail.Subject = "Write Subject Here";
string body = "Write your body Here";

mail.Body = body;

mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("[email protected]");
mail.Headers.Add("Disposition-Notification-To", "[email protected]");
smtp.Host = "XXX.XXX.XX.XX"; //Or Your SMTP Server Address
smtp.Port = 25;

//Or your Smtp Email ID and Password
smtp.EnableSsl = false;
smtp.Send(mail);

****If you are using Gmail account-**** 

 smtp.Port = 587;
smtp.EnableSsl = true;