Advertisement
Guest User

Untitled

a guest
Sep 15th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. [HttpPost]
  2. [ValidateAntiForgeryToken]
  3. public ActionResult Register(RegisterModel model)
  4. {
  5. if (ModelState.IsValid)
  6. {
  7. ApplicationUser user = new ApplicationUser { UserName = model.Email, Email = model.Email, Year = model.Year };
  8.  
  9. //Если пытаемся ввести уже существующий E-mail!!!
  10. ApplicationUser user2 = UserManager.Find(model.Email, model.Password);
  11. if (user2 != null) // если есть!
  12. {
  13. ModelState.AddModelError("HasUserToDb", "Такой пользователь уже есть базе!");
  14. return PartialView("Register");
  15. }
  16. IdentityResult result = UserManager.Create(user, model.Password);
  17. if (result.Succeeded)
  18. {
  19. //генерим токен для подтверждения регистрации
  20. var code = UserManager.GenerateEmailConfirmationToken(user.Id);
  21.  
  22. //создаем ссылку для подтверждения
  23. var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
  24.  
  25. //шлем письмо +++ТУТ ПРОБЛЕМА с "_self"+++
  26. string textEmail = "При регистрации учетной записи " + user.Email + " был указан Ваш email.<hr />Для завершения регистрации перейдите по ссылке: <a href="" + callbackUrl + "" target="_self">Завершить регистрацию</a>";
  27.  
  28. UserManager.SendEmail(user.Id, "Подтверждение электронной почты", textEmail);
  29.  
  30. return PartialView("ShowEmail");
  31. //return JavaScript("OnSuccess();");
  32. }
  33. else //не создаст Юзера
  34. { . . .
  35.  
  36. <base target="_blank">
  37.  
  38. [HttpPost]
  39. [ValidateAntiForgeryToken]
  40. public ActionResult Register(RegisterModel model)
  41. {
  42. if (ModelState.IsValid)
  43. {
  44. ApplicationUser user = new ApplicationUser { UserName = model.Email, Email = model.Email, Year = model.Year };
  45.  
  46. //Если пытаемся ввести уже существующий E-mail!!!
  47. ApplicationUser user2 = UserManager.Find(model.Email, model.Password);
  48. if (user2 != null) // если есть!
  49. {
  50. ModelState.AddModelError("HasUserToDb", "Такой пользователь уже есть базе!");
  51. return PartialView("Register");
  52. }
  53. IdentityResult result = UserManager.Create(user, model.Password);
  54. if (result.Succeeded)
  55. {
  56. //генерим токен для подтверждения регистрации
  57. var code = UserManager.GenerateEmailConfirmationToken(user.Id);
  58.  
  59. //создаем ссылку для подтверждения
  60. var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
  61.  
  62. //шлем письмо
  63. string textEmail = "При регистрации учетной записи " + user.Email
  64. + " был указан Ваш email.<hr />Для завершения регистрации перейдите по ссылке: <a href="" + callbackUrl + "">Завершить регистрацию</a>";
  65.  
  66. UserManager.SendEmail(user.Id, "Подтверждение электронной почты ", textEmail);
  67.  
  68. return PartialView("ShowEmail");
  69. //return JavaScript("OnSuccess();");
  70. }
  71. else //не создаст Юзера
  72. { . . . }
  73.  
  74. public class EmailService : IIdentityMessageService
  75. {
  76. public Task SendAsync(IdentityMessage message)
  77. {
  78. //настройка логина, пароля отправителяz
  79. var from = "ZZZZZ@yandex.by";
  80. var pass = "ZZZZZ33241";
  81.  
  82. //адрес и порт smtp - сервера, с которого мы и будем отправлять письмо
  83. SmtpClient client = new SmtpClient("smtp.yandex.ru", 25);
  84.  
  85. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  86. client.UseDefaultCredentials = false; //управляет отправкой учетных данных DefaultCredentials вместе с запросами.
  87. client.Credentials = new NetworkCredential(from, pass); //Возвращает или задает учетные данные, используемые для проверки подлинности отправителя.
  88. client.EnableSsl = true; //Указывает, использует ли SmtpClient протокол SSL для шифрования подключения.
  89.  
  90. // создаем письмо: message.Destination - адрес получателя
  91. var mail = new MailMessage(from, message.Destination); //Представляет сообщение электронной почты, которое может быть отправлено с помощью класса SmtpClient.
  92. mail.Subject = message.Subject; //Получает или задает строку темы для данного сообщения электронной почты.
  93. mail.Body = "<head><base target ="_self"></head>" + message.Body; //Получает или задает основную часть сообщения.
  94. mail.IsBodyHtml = true; //Получает или задает значение, показывающее, имеет ли основная часть почтового сообщения формат HTML.
  95.  
  96. return client.SendMailAsync(mail); //Отправляет указанное сообщение SMTP-серверу для доставки в качестве асинхронной операции.9+
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement