C# 在PasswordRecovery电子邮件中包含除和以外的变量
我试图在通过我的C web应用程序中的PasswordRecovery控件生成的电子邮件中包含一个附加变量。我有一个User_Profile表,其中包含用户的名字和姓氏,但我无法确定如何通过变量用法将这些信息传递给HTML电子邮件模板。工作很好,但当我试图传递firstName时,我得到的只是占位符。以下是我所拥有的: ASPX: 重置我的密码 忘记密码了?在下面输入您的用户名 重置我的密码 身份确认 请回答以下安全问题以接收新密码 用户名: 问题: 答复: 重置我的密码 您的新密码已发送到您的注册电子邮件地址 HTML电子邮件模板: 嗨 根据我们的记录。。。您的新密码是: 多谢各位 C:C# 在PasswordRecovery电子邮件中包含除和以外的变量,c#,asp.net,C#,Asp.net,我试图在通过我的C web应用程序中的PasswordRecovery控件生成的电子邮件中包含一个附加变量。我有一个User_Profile表,其中包含用户的名字和姓氏,但我无法确定如何通过变量用法将这些信息传递给HTML电子邮件模板。工作很好,但当我试图传递firstName时,我得到的只是占位符。以下是我所拥有的: ASPX: 重置我的密码 忘记密码了?在下面输入您的用户名 重置我的密码 身份确认 请回答以下安全问题以接收新密码 用户名: 问题: 答复: 重置我的密码 您的新密码已发送到您的
我意识到GetUserProfile/HiddenField方法可能不是最好的,但它存储并检索“firstName”变量的正确值。故障似乎发生在e.Message.Body.Replace,firstName;但是我没有发现任何错误,也无法确定占位符为什么没有被替换。你知道我在这里做错了什么吗?提前谢谢你的关注,如果你能提供帮助,我们将不胜感激。在这里找到了我的答案:。e、 Message.Body.Replace,firstName;这是不正确的。正确的方法是e.Message.Body=e.Message.Body.Replace,firstName.ToString;。占位符现在已正确替换为所需的值。谢谢。应该对密码进行哈希运算,以便您不能返回密码,@prospector Yes,但当您试图重置密码时,必须能够获取未更改的密码,以便用户知道新密码是什么。@mason-不一定为真@罗布,我没有读所有这些。你能总结一下重要的部分吗?我想应该是发送一个令牌,然后让用户在站点上重置密码?虽然这是正确的,但这并不能真正帮助巴巴多斯,因为他试图在email.FWIW中嵌入重置密码,我没有试图返回密码;我只是想在发送的电子邮件中添加一些额外的数据,其中已经包含了新重置的密码。
protected void ResetPassword_SendingMail(object sender, MailMessageEventArgs e)
{
GetUserProfile();
string firstName = hfFirstName.Value;
e.Message.Body.Replace("<%FirstName%>", firstName);
}
private void GetUserProfile()
{
string userName = (Convert.ToString(((TextBox)ResetPassword.Controls[0].FindControl("UserName")).Text));
using (SqlConnection con = new SqlConnection(sqlConString))
{
try
{
SqlCommand cmd = new SqlCommand(
@"SELECT *
FROM [dbo].[User_Profile] UP
INNER JOIN [Users] U
ON U.[UserId] = UP.[UserId]
WHERE U.[UserName] = @userName");
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@userName", userName));
con.Open();
SqlDataReader PopulateReader;
PopulateReader = cmd.ExecuteReader();
while (PopulateReader.Read())
{
hfFirstName.Value = (PopulateReader["FirstName"].ToString());
}
}
catch (Exception ex)
{
log.InfoFormat("Exception caught in GetUserProfile(): {0}", ex.ToString());
log.Info(Environment.NewLine + "End Exception" + Environment.NewLine);
}
}
}