masuma joad Ответов: 2

Как мне решить эту ошибку при отправке почты для забытого пароля


Невозможно прочитать данные из транспортного соединения: net_io_connectionclosed.

Описание: необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.IO.IOException: невозможно прочитать данные из транспортного соединения: net_io_connectionclosed.

Ошибка Источника:


Строка 55: smtp. Credentials = NetworkCred;
Строка 56: smtp.Порт = 587;
Строка 57: smtp. Send(мм);
Строка 58: lblMessage.ForeColor = Цвет.Зеленый;
Строка 59: lblMessage.Text = " пароль был отправлен на ваш адрес электронной почты.";

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Net.Mail;
using System.Drawing;
using System.Configuration;
using System.Data.SqlClient;

public partial class forgotPassword : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void SendEmail(object sender, EventArgs e)
    {
        string username = string.Empty;
        string password = string.Empty;
        string constr = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT Firstname, [Password] FROM registration WHERE Email = @Email"))
            {
                cmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim());
                cmd.Connection = con;
                con.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    if (sdr.Read())
                    {
                        username = sdr["Firstname"].ToString();
                        password = sdr["Password"].ToString();
                    }
                }
                con.Close();
            }
        }
        if (!string.IsNullOrEmpty(password))
        {
            MailMessage mm = new MailMessage("sender@gmail.com", txtEmail.Text.Trim());
            mm.Subject = "Password Recovery";
            mm.Body = string.Format("Hi {0},<br><br>Your password is {1}.<br><br>Thank You.", username, password);
            mm.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            NetworkCredential NetworkCred = new NetworkCredential();
            NetworkCred.UserName = "sender@gmail.com";
            NetworkCred.Password = "<password>";
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = NetworkCred;
            smtp.Port = 587;
            smtp.Send(mm);
            lblMessage.ForeColor = Color.Green;
            lblMessage.Text = "Password has been sent to your email address.";
        }
        else
        {
            lblMessage.ForeColor = Color.Red;
            lblMessage.Text = "This email address does not match our records.";
        }
    }
}

2 Ответов

Рейтинг:
1

muhad@

  private AlternateView Mail_Body(string username, string password)
        {
          
            string str = @"   
            <!DOCTYPE html>
            <html>
            <body>

            <p>
            <h4>This is your Login Details </h4>
            </p>
            <p>Username: " + username + @"</p>
            <p>Password: " + password + @"</p>
            <p>
            Note:We advise change of password after logging in.
            </p>
            <p>
             Please do not hesitate to contact us if you need any assistance
            </p>
            <p>

            </p>
            </body>
            </html>
              ";
            AlternateView AV =
            AlternateView.CreateAlternateViewFromString(str, null, MediaTypeNames.Text.Html);
           
            return AV;
        }



protected void SendEmail(object sender, EventArgs e)
            {
                string username = string.Empty;
                string password = string.Empty;
                string constr = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constr))
                {
                    using (SqlCommand cmd = new SqlCommand("SELECT Firstname, [Password] FROM registration WHERE Email = @Email"))
                    {
                        cmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim());
                        cmd.Connection = con;
                        con.Open();
                        using (SqlDataReader sdr = cmd.ExecuteReader())
                        {

                            if (sdr.HasRows)
                            {
                                while (sdr.Read())
                                {
                                    username = sdr["Firstname"].ToString();
                                    password = sdr["Password"].ToString();
                                }

                            }
                        }
                        con.Close();
                    }
                }

            if (!string.IsNullOrEmpty(password))
            {
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

                mail.From = new MailAddress("sender@gmail.com");
                mail.To.Add("User@gmail.com");
                mail.Subject = "Password Recovery";
                mail.IsBodyHtml = true;
                mail.AlternateViews.Add(Mail_Body("username", "Password"));
                //mail.Body = message;

                SmtpServer.Port = 25;
                SmtpServer.Credentials = new System.Net.NetworkCredential("email Username", "email Password");
                SmtpServer.EnableSsl = false;

                SmtpServer.Send(mail);

            }



            }