Отправить URL с строкой запроса с SmtpClient - PullRequest
4 голосов
/ 17 февраля 2010

Основной вопрос здесь: я отправляю электронные письма, используя стандартный SmtpClient .NET Framework (3.5). Типом тела является HTML (IsBodyHtml = true). В теле я добавил URL-адрес с двумя параметрами в строке запроса, например:

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

Это кодируется в:

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

При выполнении простого Request["var2"] я получаю «ноль». Что я должен сделать, чтобы правильно закодировать амперсанд в почтовом сообщении?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2010

Это прекрасно работает для меня:

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);
0 голосов
/ 17 февраля 2010

Используйте метод UrlEncode . Это сделает всю кодировку вашей входной строки за вас.

...