C# 如何在邮件客户机';邮件链接?
我有一个ASP.NET/C应用程序,其中一部分将WWW链接转换为HTML电子邮件中的mailto链接 例如,如果我有一个链接,例如: www.site.com 它被改写为: 邮寄地址:my@address.com?主题=www.site.com 这非常有效,直到我遇到带有符号的URL,这会导致主题被截断 例如,链接: www.site.com?val1=a&val2=b 显示为: 邮寄地址:my@address.com?Subject=www.site.com?val1=a&val2=b 这正是我想要的,但当单击时,它会创建一条带有以下内容的消息: subject=www.site.com?val1=a 它删除了C# 如何在邮件客户机';邮件链接?,c#,email,C#,Email,我有一个ASP.NET/C应用程序,其中一部分将WWW链接转换为HTML电子邮件中的mailto链接 例如,如果我有一个链接,例如: www.site.com 它被改写为: 邮寄地址:my@address.com?主题=www.site.com 这非常有效,直到我遇到带有符号的URL,这会导致主题被截断 例如,链接: www.site.com?val1=a&val2=b 显示为: 邮寄地址:my@address.com?Subject=www.site.com?val1=a&val2=b 这正是
&val2
,这与mailto命令中的分隔符一样有意义。因此,我尝试了其他各种方法来解决这个问题,但没有成功。
我尝试过隐式引用
subject='
部分,但没有任何效果
I(在C#中)用替换“&”代码>哪些Live Mail和Thunderbird刚刚返回:
www.site.com?val1=a&val2=b
我将“&”替换为“%26”,结果是:
邮寄地址:my@address.com?Subject=www.site.com?val1=a%26amp;val2=b
在主题为的邮件中:
www.site.com?val1=a&;val2=b
编辑:
为了响应URL是如何构建的,这一点被大大减少了,但这是它的要点。代替att.Value.Replace,我尝试了System.Web.HtmlUtility.URLEncode调用,这也会导致失败
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");
}
尝试mailto:my@address.com?Subject=www.site.com?val1=a%26val2=b
&
是HTML转义码,而%26
是URL转义码。因为它是一个URL,所以这就是您所需要的
编辑:我想这就是你建立URL的方式不要那样构建URL您需要先将%26
放入其中,然后才能让任何其他内容解析或转义它。如果您确实必须这样做(您确实应该尽量避免),那么您应该搜索“&;”
,而不是只搜索“&”
,因为此时字符串已被HTML转义
因此,理想情况下,您可以在HTML转义之前正确构建URL。如果不能正确执行,至少要搜索正确的字符串,而不是错误的字符串<代码>“&”
是错误的。您不能将任何字符作为主题。您可以尝试对主题的值使用System.Web.HttpUtility.URLEncode函数…使用URL转义码%26
是正确的方法
不幸的是,这在Android操作系统上仍然不起作用,因为我最终为我的案例所做的是取消了
&
www.site.com/mytest.php?val1=a=b=c
。其中第二个和第三个=
相当于www.site.com?val1=a&val2=b&val3=c
在mytest.php中,我在?
上分解,然后在=
上再次分解
我知道这是一个完全的黑客攻击,但它确实对我有用。我尝试过,在电子邮件中,链接显示为val1=A%26amp;Live Mail/Thunderbird中的val2=b,然后在生成新邮件时,主题呈现为?val1=a&;瓦尔2=b@Serapth:那没有任何意义。您的问题中有一个场景,您尝试了“%26amp;”,这将显示您所说的输出,但我的URL不应该有这个问题。你到底是如何建立你的URL的?@Welbog,编辑了主要帖子来回答你的问题,因为在评论中,代码格式很糟糕。虽然我同意,结果毫无意义,但在添加最后一次替换调用后,它的格式是“www.site.com?val1=a%26amp;val2=b'在my mail client.ARG中!我真不敢相信我看了这么久都没有考虑到这一点(一个%26amp;的结果应该是出了什么问题的一个明确指标。不幸的是,有时你太专注于一个问题,以至于忘记了你的输入可能是原因,特别是当调试器向你显示一切正常时。非常感谢。单独工作意味着没有同行评议,这可能是最大的问题我错过了一件事。你的洞察力对我来说是天赐良机。我本来打算悬赏解决这个问题,因为我没有看到你的编辑。我仍然会尽我所能,完全信任你。谢谢!我尝试了这个,但没有成功,邮件客户端在通过UrlEncode后无法读取链接。