Yunus Bulduk Ответов: 1

Aspnet MVC identity send confirmmail htmlpage


Эй
Как отправить comfirm mail вместе с html-страницей ?

Я использую Identity smtp mail sender . Но я не могу отправить на почту свою html-страницу шаблона.

Спасибо за помощь

Настоящий кодекс :

Что я уже пробовал:

public async Task<ActionResult> Register(RegisterViewModel model)
      {
          if (ModelState.IsValid)
          {
              var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
              var result = await UserManager.CreateAsync(user, model.Password);
              if (result.Succeeded)
              {
                  await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                  await UserManager.AddToRoleAsync(user.Id, "Uye");
                  // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                  // Send an email with this link
                  string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                  var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                  await UserManager.SendEmailAsync(user.Id, "Üyelik Doğrulama", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
       //
                  return RedirectToAction("Index", "Home");
              }
              AddErrors(result);
          }

          // If we got this far, something failed, redisplay form
          return View(model);
      }




public Task SendAsync(IdentityMessage message)
       {
           SmtpClient client = new SmtpClient();
           client.Port = 587;
           client.Host = "in-v3.mailjet.com";
           client.EnableSsl = true;
           client.Timeout = 10000;
           client.DeliveryMethod = SmtpDeliveryMethod.Network;
           client.UseDefaultCredentials = false;
           client.Credentials = new NetworkCredential("user", "key");

           return client.SendMailAsync("mail", message.Destination, message.Subject,message.Body);
       }

Afzaal Ahmad Zeeshan

В чем проблема с этим кодом?

Yunus Bulduk

Я не могу отправить HTML, который я подготовил в качестве шаблона.

Afzaal Ahmad Zeeshan

Пожалуйста, смотрите мой ответ в решении 1.

Yunus Bulduk

спасибо ответ . проблема я не могу отправить html-код для просмотра муки

1 Ответов

Рейтинг:
9

Afzaal Ahmad Zeeshan

Прежде всего, вы используете IdentityMessage вместо MailMessage.

Класс IdentityMessage (Microsoft.сеть САШ.Удостоверение Личности) | Microsoft Docs[^]
Класс MailMessage (System.Net.Mail) | Microsoft Docs[^]

Там был вариант с MailMessage для отправки HTML-контента, а также для его обработки и доставки с помощью специального MIME. Если вы хотите отправить электронное письмо с HTML-содержимым, вам необходимо установить IsBodyHtml флаг, чтобы быть правдой, так что где-нибудь раньше SendMailAsync(), сделать это,

client.IsBodyHtml = true;
Затем отправьте электронное письмо, и на этот раз оно будет проанализировано как HTML-документ и визуализировано должным образом. Кроме того, вы всегда можете отправить ссылку на свою веб-страницу, чтобы ваши зрители могли перейти по ссылке на клик, чтобы просмотреть ее как HTML-документ, если их почтовое программное обеспечение сломано или старше.

Видеть здесь, Почта.Свойство IsBodyHtml (System.Net.Mail) | Microsoft Docs[^]

Еще одна вещь, .NET Core рекомендует использовать MailKit для электронной почты в .NET Core, Обратная связь - сайт jstedfast/MailKit: кросс-платформенный .Net библиотека для IMAP, POP3 и SMTP.[^]. Вы можете проверить, как этот SDK позволяет отправлять документы в формате HTML.