0
我有此代碼發送電子郵件來重置用戶密碼:電子郵件未與ASP.NET身份框架發送
//
// POST: /Account/ForgotPassword
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<JsonResult> ForgotPassword(ForgotPasswordViewModel model, bool CaptchaValid)
{
string mensaje = String.Empty;
if (ModelState.IsValid)
{
if (!CaptchaValid)
mensaje = "ERROR: Captcha inválido.";
else
{
var user = await UserManager.FindByEmailAsync(model.Email);
if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
{
mensaje = "ERROR: La dirección de correo electrónico no está registrada.";
}
else
{
var provider = new DpapiDataProtectionProvider("WebAttendance");
UserManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, string>(provider.Create("UserToken")) as IUserTokenProvider<ApplicationUser, string>;
string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(user.Id, "Reset Password", "Por favor, cambie su contraseña al hacer click <a href=\"" + callbackUrl + "\">aquí</a>");
return Json("INFO: Se envió un mail a su cuenta de correo con instrucciones para cambiar su contraseña.");
}
}
}
// If we got this far, something failed, redisplay form
return Json(mensaje);
}
上面的代碼運行沒有任何錯誤,但電子郵件是沒有實際發送。
這是在Web.config條目:
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="mail.desytec.cl" password="xxxx" port="587" userName="[email protected]" enableSsl="false"/>
</smtp>
</mailSettings>
</system.net>
順便說,讀一些職位的時候,我知道我必須有App_Start IdentityConfig.cs文件,但文件丟失。這可能是原因嗎?
代碼中的哪個位置發送電子郵件?你在哪裏初始化smtp並使用smtp配置發送電子郵件? – ISHIDA
https://stackoverflow.com/questions/40674457/how-to-configure-sender-email-credentials-for-asp-net-identity-usermanager-sende –
我認爲這是由UserManager.SendEmailAsync自動調用 – jstuardo