-1
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 was unhandled by user code に直面しました...どうすれば解決できますか?

4

4 に答える 4

2

簡単に言うと、それを処理するユーザー コードを書きます。

Try..Catch ブロックに慣れていない場合は、それらについて読んで、例外的な状況 (メール サーバーがオフラインになっている、ネットワーク接続の問題、パスワードの期限切れなど) を処理するために (必要に応じて) 使用することをお勧めします。

例外の原因となっているコードは、次の行である可能性が最も高く、どこかで開始できるはずです。

smtp.Send(loginInfo);
于 2012-09-27T11:14:39.623 に答える
0

問題は、間違ったポート番号を使用していることです。SSL 経由の Gmail の場合。ドキュメントから:

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

オプションを true に設定してEnableSslいるため、ポート番号を に設定する必要があります465

于 2012-09-27T11:26:47.503 に答える
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;
}
于 2012-09-27T11:15:20.037 に答える