使用SmtpClient发送带有查询字符串的URL

时间:2010-02-17 10:24:57

标签: c# query-string urlencode smtpclient

基本问题:我正在使用.NET框架的默认SmtpClient(3.5)发送电子邮件。 bodytype是HTML(IsBodyHtml = true)在正文中,我在查询字符串中添加了一个带有两个参数的url,如下所示:

http://server.com/page.aspx?var1=foo&var2=bar

此get编码为:

http://server.com/page.aspx?var1=foo%26var2=bar (the ampersand is encoded as percent-26)

当做一个简单的Request["var2"]时,我得到'null'。 如何正确编码邮件中的&符号?

2 个答案:

答案 0 :(得分:3)

这对我来说很好用:

var client = new SmtpClient();
client.Host = "smtp.somehost.com";
var message = new MailMessage();
message.From = new MailAddress("from@example.com");
message.To.Add(new MailAddress("to@example.com"));
message.IsBodyHtml = true;
message.Subject = "test";
string url = HttpUtility.HtmlEncode("http://server.com/page.aspx?var1=foo&var2=bar");
message.Body = "<html><body><a href=\"" + url + "\">Test</a></body></html>";
client.Send(message);

答案 1 :(得分:0)

使用UrlEncode方法。这将为您完成输入字符串的所有编码。