【发布时间】:2019-01-27 05:34:32
【问题描述】:
我有一个邮件程序,我在其中发送一个 html 页面作为邮件正文。 html页面有一些链接。我在这里所做的是识别这些链接并将这些链接替换为指向我的页面的链接,并将链接作为查询字符串中的参数以及我在文本框中输入的参数“用户名”发送。这是代码-
StreamReader reader = new StreamReader(Server.MapPath("~/one.html"));
string readFile = reader.ReadToEnd();
Regex regx = new Regex("(?<!src=\")http(s)?://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*([a-zA-Z0-9\\?\\#\\=\\/]){1})?", RegexOptions.IgnoreCase);
string output = regx.ToString();
output = readFile;
string username = Server.UrlEncode(this.txtUsername.Text);
output = regx.Replace(output, new MatchEvaluator((match) =>
{
var url = Uri.EscapeDataString(match.Value.ToString());
return $"http://localhost:61187/two?sender={username}&link={url}";
}));
该网址中有一个产品代码。我想要的是产品代码以及链接。链接可以是-http://example.in/next/pr-01.html pr-01 是产品代码。产品代码采用这种格式 - pr-01,pr-02.... 我是 .net 新手,之前没有使用过正则表达式,所以我不知道如何分别获取产品代码和完整链接并将它们传递到查询字符串中,如上所示
【问题讨论】:
标签: c# .net regex smtp query-string