如何在存储库类中为电子邮件编写链接

本文关键字:电子邮件 链接 存储 | 更新日期: 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);
}