ASP.Net 3.5密码恢复SMTP设置

ASP.Net 3.5密码恢复SMTP设置,asp.net,passwords,Asp.net,Passwords,在ASP.Net中-我正在使用内置的密码恢复向导 是否有任何方法可以将SMTP身份验证添加到邮件身份验证向导,而无需将其添加到web.config?或者它可以被注入到代码背后的某个地方 我的aspx代码如下-目前没有代码隐藏: <asp:PasswordRecovery ID="PasswordRecovery1" runat="server" borderStyle="None" borderWidth="1px" Font-Size="10pt" Fo

在ASP.Net中-我正在使用内置的密码恢复向导

是否有任何方法可以将SMTP身份验证添加到邮件身份验证向导,而无需将其添加到web.config?或者它可以被注入到代码背后的某个地方

我的aspx代码如下-目前没有代码隐藏:

       <asp:PasswordRecovery ID="PasswordRecovery1" runat="server" borderStyle="None" 
        borderWidth="1px"  Font-Size="10pt" Font-Names="Verdana" onsendingmail="PasswordRecovery1_SendingMail">
    <TitleTextStyle BackColor="#6B696B" Font-Bold="True" ForeColor="#FFFFFF" />
    <MailDefinition From="info@mydomain.co.uk" Priority="High" 
        Subject="My Domain - new, temporary password" BodyFileName="forgotpassword.txt">
    </MailDefinition>
    <UserNameTemplate>
        <table border="0" cellpadding="1" cellspacing="0" 
            style="border-collapse:collapse;">
            <tr>
                <td>
                    <table border="0" cellpadding="0">

                        <tr>
                            <td align="center" colspan="2" style="font-family:Arial;font-size:Small;">
                                Enter your User Name to receive your password.</td>
                        </tr>
                        <tr>
                            <td align="right" style="font-family:Arial;font-size:Small;">
                                <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
                                    ControlToValidate="UserName" ErrorMessage="User Name is required." 
                                    ToolTip="User Name is required." ValidationGroup="PasswordRecovery1">*</asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td align="center" colspan="2" style="color:Red;">
                                <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal>
                            </td>
                        </tr>
                        <tr>
                            <td align="right" colspan="2">
                                <asp:Button ID="SubmitButton" runat="server" CommandName="Submit" Text="Submit" 
                                    ValidationGroup="PasswordRecovery1" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </UserNameTemplate>
</asp:PasswordRecovery>

输入用户名以接收密码。
用户名:
*
目前我刚刚收到一条信息:

System.Net.Mail.SmtpFailedRecipientException 邮箱不可用。 服务器响应为:必须经过身份验证


该错误意味着您的SMTP服务器要求您的应用程序先进行自身身份验证,然后才能通过它发送电子邮件

您可能正在后台使用
SmtpClient
。.NET SMTP客户端的默认值在应用程序的配置文件中定义,在本例中是web.config。唯一的另一个地方是手动管理
SmtpClient
,因为您处理PasswordRecovery控件的事件

PasswordRecovery
不公开任何可以控制底层SMTP客户端的属性

请注意,我强烈建议不要使用
WebControls
,因为使用它们意味着您放弃了对应用程序的大量控制:逻辑控制和表示控制。我还要注意,您提供的标记是无效的,因为它使用表示属性,强烈建议不要将
用于布局。

受保护的无效按钮1\u单击(对象发送者,事件参数e)
protected void Button1_Click(object sender, EventArgs e)
    {
            try
            {
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\database\personal.mdf;Integrated Security=True;Connect Timeout=60;User Instance=True"))
            {
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT UserName,Password FROM Logintable Where emailid= '" + txtEmail.Text.Trim() + "'", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);
            con.Close();
            }
            if(ds.Tables[0].Rows.Count>0)
            {



                            System.Net.Mail.MailMessage Msg = new System.Net.Mail.MailMessage();
                            // Sender e-mail address.
                            Msg.From = new MailAddress(txtEmail.Text);
                            // Recipient e-mail address.
                            Msg.To.Add(txtEmail.Text);
                            Msg.Subject = "Your Password Details";
                            Msg.Body = "Hi, <br/>Please check your Login Detailss<br/><br/>Your Username: " + ds.Tables[0].Rows[0]["UserName"] + "<br/><br/>Your Password: " + ds.Tables[0].Rows[0]["Password"] + "<br/><br/>";
                            Msg.IsBodyHtml = true;
                            // your remote SMTP server IP.
                            SmtpClient smtp = new SmtpClient();
                            smtp.Host = "smtp.gmail.com";
                            smtp.Port = 587;
                            smtp.Credentials = new System.Net.NetworkCredential("youremail@gmail.com", "N@@@@@@@@");
                            smtp.EnableSsl = true;
                            smtp.Send(Msg);

                            //Msg = null;
                            Label3.Text = "Your Password Details Sent to your mail";
                            // Clear the textbox valuess
                            txtEmail.Text = "";
                    }
                        else
                        {
                              lbltxt.Text = "The Email you entered not exists.";
                        }
                        }
                     catch (Exception ex)
                    {
                        Label2.Text = "Error Occured: " + ex.Message.ToString();

                    }
            }
       }
{ 尝试 { 数据集ds=新数据集(); 使用(SqlConnection con=newsqlconnection(@“数据源=。\SQLEXPRESS;AttachDbFilename=D:\database\personal.mdf;集成安全性=True;连接超时=60;用户实例=True))) { con.Open(); SqlCommand cmd=new SqlCommand(“从登录表中选择用户名、密码,其中emailid='”+txtEmail.Text.Trim()+”,con); SqlDataAdapter da=新的SqlDataAdapter(cmd); da.填充(ds); con.Close(); } 如果(ds.Tables[0].Rows.Count>0) { System.Net.Mail.MailMessage Msg=new System.Net.Mail.MailMessage(); //发件人电子邮件地址。 Msg.From=新邮件地址(txtEmail.Text); //收件人电子邮件地址。 Msg.To.Add(txtEmail.Text); Msg.Subject=“您的密码详细信息”; Msg.Body=“您好,
请检查您的登录详细信息您的用户名:“+ds.Tables[0]。行[0][“Username”]+”

您的密码:“+ds.Tables[0]。行[0][“Password”]+”

; Msg.IsBodyHtml=true; //您的远程SMTP服务器IP。 SmtpClient smtp=新SmtpClient(); smtp.Host=“smtp.gmail.com”; smtp.Port=587; smtp.Credentials=新系统.Net.NetworkCredential(“youremail@gmail.com","N",; smtp.EnableSsl=true; smtp.Send(Msg); //Msg=null; Label3.Text=“您的密码详细信息已发送到您的邮件”; //清除文本框值 txtEmail.Text=“”; } 其他的 { lbltxt.Text=“您输入的电子邮件不存在。”; } } 捕获(例外情况除外) { Label2.Text=“出现错误:”+ex.Message.ToString(); } } }
谢谢-刚刚确认了我的想法。干杯,马克