如何在存储库类中为电子邮件编写链接
本文关键字:电子邮件 链接 存储 | 更新日期: 2023-09-27 18:24:38
我正试图弄清楚如何在存储库类中编写动态URL(也称为activationlink)。
以下是使用的内容,但我不确定如何执行"http://mysite.com"动态:
private static void SendActivationEmail(User user)
{
string ActivationLink = "http://mysite.com" +
user.Username + "/" + user.NewEmailKey;
var message = new MailMessage("email@email.com", user.Email)
{
Subject = "Activate your account",
Body = ActivationLink
};
var client = new SmtpClient("smtp.email.com");
client.Send(message);
}
对于您的案例,您可以执行类似的操作
String.Format("<a href=/"{0}/{1}/{2}">Click Here To Activate</a>",
user.Username, user.NewEmailKey);
如果你知道希望用户通过url重定向到激活网页。然后您希望通过查询字符串格式化链接这是一个使用它的例子,你需要如何适应你的用例
HttpContext.Current.Request.Url.Host
而不是HttpContext.Current.Request.Url
对于您的本地开发环境,您将获得localhost
,但当您将其部署到某个web服务器时,它将正确地将自身更新为托管的web服务器url。
理想情况下,您会有一个包含查询字符串的路径,然后在页面加载中有相应的代码来验证和使用查询字符串。
示例:
<br/>"+HttpContext.Current.Request.Url.Host + @"/AccountValidate.aspx?id=SomeId"
注意:您也可以使用HttpContext.Current.Request.Url,它会使用querystring:将您重定向到当前页面
<br/>"+HttpContext.Current.Request.Url + "?user=SomeUser " .... same for user.NewEmailKey does this make sense..??
然后在AccountValidate.aspx或当前页面的页面加载中:
string user = Convert.ToString(Request.QueryString["user"]);
if(!string.IsNullOrEmpty(user))
... //Code here to inform the user of successful activation
您需要使用<a href>并将正文设置为html。试试这个:
private static void SendActivationEmail(User user)
{
string activationLink = string.Concat("<a href='ht", "tp://mysite.com/", user.Username, "/", user.NewEmailKey, "'>Activate Here</a>");
var message = new System.Net.Mail.MailMessage("email@email.com", user.Email)
{
Subject = "Activate your account",
Body = activationLink,
IsBodyHtml = true
};
var client = new System.Net.Mail.SmtpClient("smtp.email.com");
client.Send(message);
}