代码之家  ›  专栏  ›  技术社区  ›  Serapth

如何处理邮件客户端mailto链接中的与号?

  •  8
  • Serapth  · 技术社区  · 16 年前

    我有一个ASP。NET/C#应用程序,其中一部分将WWW链接转换为HTML电子邮件中的mailto链接。

    例如,如果我有一个链接,比如:

    www.site.com

    这非常有效,直到我遇到带有与号的URL,这会导致主题被截断。

    例如链接:

    邮寄地址:my@address.com主题=www.site.com?val1=a&val2=b

    主题=www.site.com?val1=a

    &val2 ,这是有道理的&;是mailto命令中的分隔符。

    我试图含蓄地引用 subject=''

    I(在C#中)替换“&“与 & Live Mail和Thunderbird刚刚变成:

    我替换了“&“%26”导致:

    邮寄地址:my@address.com主题=www.site.com?val1=a%26amp;val2=b

    在主题为的邮件中:

    www.site.com?val1=a&val2=b


    编辑:

    HtmlAgilityPack.HtmlNodeCollection nodes =doc.DocumentNode.SelectNodes("//a[@href]");
    foreach (HtmlAgilityPack.HtmlNode link in nodes)
    {
      HtmlAgilityPack.HtmlAttribute att = link.Attributes["href"];
      att.Value = att.Value.Replace("&", "%26");
    }
    
    4 回复  |  直到 5 年前
        1
  •  16
  •   Welbog    16 年前

    尝试 邮寄地址:my@address.com主题=www.site.com?val1=a%26val2=b

    & 是一个HTML转义码,而 %26 是一个URL转义码。因为这是一个URL,这就是你所需要的。

    不要用这种方式构建URL! 你需要得到 %26 在让其他任何东西解析或转义它之前,请先在其中搜索。如果你真的必须这样做(你真的应该尽量避免),那么你应该搜索 "&" 而不仅仅是 "&"

    因此,理想情况下,在HTML转义之前正确构建URL。如果你不能正确地完成它,至少要搜索正确的字符串,而不是错误的字符串。 “&” 是错误的。

        2
  •  1
  •   Lucas    16 年前

    你不能把任何角色作为主题。您可以尝试使用系统。网状物。HttpUtility。URLEncode对受试者价值的影响。..

        3
  •  0
  •   T.Rob    13 年前

    使用URL转义码 %26 这是正确的方式。

    bug 8023

        4
  •  0
  •   Mihai Iorga    13 年前

    我最终为我的案件所做的是消除 & .

    www.site.com/mytest.php?val1=a=b=c 第二和第三 = 相当于 www.site.com?val1=a&val2=b&val3=c

    在mytest.php中,我爆炸了 ? .

    我知道这是一个彻底的黑客,但它确实对我有效。