c# - 来自电子邮件的 ASP.NET MVC 超链接
问题描述
在我的 ASP.NET MVC Web 应用程序中,我设置了密码恢复并且一切正常,但是超链接无法正确显示。
它打印出整个 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 电子邮件操作:
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 栏中,而是能够单击超链接
解决方案
听起来您的电子邮件是以纯文本而不是 HTML 格式发送的。
IsBodyHtml
您可以通过设置MailMessage 对象的属性来解决此问题。在你的情况下:
msg.IsBodyHtml = true;
推荐阅读
- react-native - 无法在 FlatList 中呈现对象数组
- sql - 根据标签字段条件过滤查询以列出资源。多对多 SQL 关系表的过滤查询
- c++ - 是否允许 C++ 编译器将最后一次使用的左值隐式转换为右值?
- haskell - 在对象之外更改对象的变量是否被视为副作用?
- c++ - C++ -1 index has value of last index element ? Huh?
- android - 将数字字符串格式化为 2 个十进制双精度数,与数字字符串长度无关
- powershell - 如何使用 PowerShell 在行位置的文件中插入新行?
- javascript - D&D 翻页计数器
- javascript - 按选择元素的值过滤组件
- php - Blade 模板中的 Laravel 对象访问