我一直在遵循本指南http://www.aspsnippets.com/Articles/Send-user-Confirmation-email-after-Registration-with-Activation-Link-in-ASPNet.aspx来创建一个在注册表上发送验证电子邮件的系统,我似乎偶然发现了一个小问题,因为该指南适用于Web应用程序,我需要修改它以用于控制台应用,
这段代码适用于Web应用程序,但我正在尝试将其更改为适合控制台应用程序。
body += "<br /><a href = '" +Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>";
尝试阅读有关WebClient或Uri选项但我似乎无法弄清楚如何获取绝对Uri并添加所需的字符串以从控制台应用程序生成激活链接。
如果需要,将添加更多代码。
尝试遵循此SO How to build a Url?,但我似乎无法使其正常工作。
激活代码生成并将其保存在DB上。
private static void SendActivationEmail(string email, string userName, MySqlConnection mysqlCon)
{
string activationCode = Guid.NewGuid().ToString();
using (mysqlCon)
{
using (MySqlCommand cmd = new MySqlCommand("UPDATE accounts SET ActivationCode=@ActivationCode " +
"WHERE Username=@Username;"))
{
using (MySqlDataAdapter sda = new MySqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@Username", userName);
cmd.Parameters.AddWithValue("@ActivationCode", activationCode);
cmd.ExecuteNonQuery();
mysqlCon.Close();
}
}
}
答案 0 :(得分:0)
您是否正在构建一个具有用户注册特定服务的控制台应用程序?我真的没有得到你想要做的事情。
如果您有控制台应用程序,则不存在Request
,因此肯定没有Request.Url
。因此,您需要另一种方法来查找或构建要在外发电子邮件中嵌入的URL。
答案 1 :(得分:0)
在ASP.NET中,您的应用程序是托管的,并且始终具有Url,另一方面,在控制台应用程序中,您必须手动设置它。
扩展Roy Dictus评论:
也许最好在应用程序配置中添加一个参数,将其命名为MyWebActivationBaseUrl并将值设置为“http://myserver.com/Activate.aspx?ac=”。
然后用它来构建个人激活网址。