Я создаю подтверждение по электронной почте после регистрации пользователя в моем приложении ASP.NET.
Вот мой код:
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = new Uri(Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code }));
SmtpClient smtpClient = new SmtpClient("smtp.office365.com", 25);
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new System.Net.NetworkCredential(credentials, credentials);
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;
MailMessage mail = new MailMessage();
mail.Body = "Please confirm your account by clicking this link: <a href=\""
+ callbackUrl + "\">link</a>";
mail.From = new MailAddress(Address, App);
mail.To.Add(new MailAddress(user.Email));
//mail.CC.Add(new MailAddress("MyEmailID@gmail.com"));
smtpClient.Send(mail);
Вот подтверждение по электронной почте:
[HttpGet]
[Route("ConfirmEmail", Name = "ConfirmEmailRoute")]
public async Task<IHttpActionResult> ConfirmEmail(string userId = "", string code = "")
{
//var _result = XElement.Parse(success).Value;
if (string.IsNullOrWhiteSpace(userId) || string.IsNullOrWhiteSpace(code))
{
ModelState.AddModelError("", "User Id and Code are required");
return BadRequest(ModelState);
}
IdentityResult result = await UserManager.ConfirmEmailAsync(userId, code);
if (result.Succeeded)
{
var response = new JObject();
response.Add(new JProperty("Email Verified", "You can now log in to the app."));
return Ok(response);
}
else
{
return GetErrorResult(result);
}
}
Это электронное письмо успешно отправляется в настольном приложении и в приложении Gmail на мобильном телефоне.
Для устройств Apple почтовое приложение не берет ссылку полностью
И.Е.
callbackurl не все включено в ссылку
Заранее спасибо.