ASP.Net 3.5密码恢复SMTP设置
在ASP.Net中-我正在使用内置的密码恢复向导 是否有任何方法可以将SMTP身份验证添加到邮件身份验证向导,而无需将其添加到web.config?或者它可以被注入到代码背后的某个地方 我的aspx代码如下-目前没有代码隐藏: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: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();
}
}
}
谢谢-刚刚确认了我的想法。干杯,马克