ASP.NET MVC Гиперссылка из электронной почты - PullRequest
1 голос
/ 29 апреля 2019

В моем веб-приложении ASP.NET MVC я настроил восстановление пароля, и все это работает очень хорошо, однако гиперссылка не будет отображаться правильно.

Он печатает весь URL, а не текст, который я хотел бы иметь, например. "Здесь"

Это проблема с моим кодом или, возможно, только с электронной почтой.

 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, "Holiday Tracker Reset Password", "Please reset your password by using the following link. Copy and paste it into the url. <a href=\"" + callbackUrl + "\">here</a>");
 return RedirectToAction("ForgotPasswordConfirmation", "Account");

Sned Email Action:

   void sendMail(IdentityMessage message)
    {
        #region formatter
        string text = string.Format("", message.Subject, message.Body);
        string html = "";

        html += HttpUtility.HtmlEncode(@"" + message.Body);
        #endregion

        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(ConfigurationManager.AppSettings["Email"].ToString());
        msg.To.Add(new MailAddress(message.Destination));
        msg.Subject = message.Subject;
        msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));
        msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));

        SmtpClient smtpClient = new SmtpClient("smtp-mail.outlook.com", Convert.ToInt32(587));
        System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["Email"].ToString(), ConfigurationManager.AppSettings["Password"].ToString());
        smtpClient.Credentials = credentials;
        smtpClient.EnableSsl = true;
        smtpClient.Send(msg);
    }

В идеале, я бы хотел, чтобы пользователь не вставлял ссылку в строку URL, а мог щелкнуть гиперссылку

1 Ответ

1 голос
/ 29 апреля 2019

Похоже, ваша электронная почта отправляется в виде обычного текста, а не в формате HTML.

Вы можете решить эту проблему, установив свойство IsBodyHtml вашего объекта MailMessage.В вашем случае:

msg.IsBodyHtml = true;

Это задокументировано здесь: https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailmessage.isbodyhtml?view=netframework-4.8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...