我有控制器代码来恢复密码,但它不起作用。 将新密码发送到邮件。
public ActionResult RecuperarPassword() {
return View();
}
[HttpPost]
public ActionResult RecuperarPassword(String mail)
{
using (mensajeriaEntities4 bdmensajeria = new mensajeriaEntities4())
{
var i = (from p in bdmensajeria.usuario
where p.mail ==mail
select p).FirstOrDefault();
if (i != null)
{
String status = SendPassword(i.contraseña, i.mail, i.login);
ModelState.AddModelError("", "Por favor revise su correo para iniciar sesión");
}
else {
ModelState.AddModelError("", "Por favor ingrese un correo valido registrado");
}
return View();
}
}
public String SendPassword(String contraseña, String mail, String login) {
try
{
MailMessage email = new MailMessage();
email.To.Add(mail);
email.From = new MailAddress("ivesandrey@gmail.com");
email.Subject = "Recuperar contraseña para su cuenta" + mail;
String userMessage = "";
userMessage = userMessage + "<br/><b> Login:</b>" + mail;
userMessage = userMessage + "<br/><b> contraseña:>/b>" + contraseña;
String Body = "Hola" + login + ",<br/><br/>Estos son sus datos de ingreso:<br/><br/>" + userMessage + "<br/><br/>Gracias";
email.Body = Body;
email.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com"; // SMTP Server Address of gmail
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("ivvesandrey@gmail.com", "contraseña");
smtp.EnableSsl = true;
smtp.Send(email);
return "Por favor verifique su correo para recuperar su contraseña";
}
catch
{
return "Error";
}
}
和视图的代码:
<script>
function Validate() {
var data = document.getElementById("txtEmail").value;
if (data == "") {
alert("Por favor ingrese su email.");
return false;
} else {
return true;
}
}
</script>
@using (Html.BeginForm("Index", "Forgotpassword"))
{
<div>
Recuperar Password:@Html.TextBox("mail", "", new { @style = "width:200px;", @id = "txtEmail" })
<input type="submit" value="Submit" onclick="javascript: return Validate();"
当我输入无效的无效电子邮件时,提交按钮无效。 当我输入的电子邮件是数据库时,页面仍然在运行并且不发送邮件。
答案 0 :(得分:1)
在您的控制器代码中,操作是
RecuperarPassword(String mail)
但在您的表单中,Index
控制器上的操作为Forgotpassword
。
@using (Html.BeginForm("Index", "Forgotpassword"))
他们需要是相同的 - 无论哪个
答案 1 :(得分:0)
这一行:
Html.BeginForm("Index", "Forgotpassword")
意味着您正在尝试调用Index
控制器的ForgotPassword
方法。您的示例没有Index
方法。
根据您的示例,假设您提供控制器名称,这应该会触发您的方法:
Html.BeginForm("RecuperarPassword", "YOUR_CONTROLLER_NAME")