Я пытаюсь вызвать глубокую ссылку, которая будет отправлена пользователю по электронной почте.
Это типичный сценарий забытого пароля, однако вместо сброса пароля через веб-ссылку пользователь будет делать это в приложении для Android.
Вот как я генерирую электронное письмо.
[HttpPost]
[AllowAnonymous]
[Route("ForgotPassword")]
public async Task<IHttpActionResult> ForgotPassword(ForgotPasswordBindingModel model)
{
if (ModelState.IsValid)
{
var user = await AppUserManager.FindByEmailAsync(model.Email);
if (user == null || !(await AppUserManager.IsEmailConfirmedAsync(user.Id)))
{
// Don't reveal that the user does not exist or is not confirmed
return Ok();
}
// Send an email with this link
string code = await AppUserManager.GeneratePasswordResetTokenAsync(user.Id);
//var callbackUrl = new Uri(Url.Link("ResetPasswordRoute", new { user.Id, code }));
var callbackIntent = "intent://forgotpassword?code="+code+"#Intent;scheme=challengehunt;package=com.seed.challengehunt;end";
await AppUserManager.SendEmailAsync(user.Id, "Reset Password", "This would only work if you are seeing this email in an android device. Please reset your password by clicking <a href=\"" + callbackIntent + "\">here</a>");
return Ok();
}
return BadRequest(ModelState);
}
Это мой почтовый сервис, прикрепленный к менеджеру пользователя
private async Task ConfigureGmailAsync(IdentityMessage message)
{
// Mail message
var mail = new MailMessage()
{
From = new MailAddress("xyz@xyz.com", "Admin"),
Subject = message.Subject,
Body = message.Body,
IsBodyHtml=true
};
// Credentials
var credentials = new NetworkCredential("admin@xyz.com", "xyz");
mail.To.Add(message.Destination);
// Smtp client
var client = new SmtpClient()
{
Port = 8889,
UseDefaultCredentials = false,
Host = "mail.domain.com",
EnableSsl = false,
Credentials = credentials
};
// Send it...
await client.SendMailAsync(mail);
}
Это письмо, которое я получаю
Как видите, ссылка не активна.
Любые намеки?