4

我正在使用其中带有 & 符号的电子邮件地址,用户想要一个“联系我们”链接来打开一条新消息并填充他们的地址,我通常使用 href,但是 & 符号导致这不起作用,有什么想法吗?

这是我目前所拥有的:

<a href="mailto:L&D@gha.org.uk? subject=MessageTitle&amp;" 
        style="font-family: Verdana; font-size: large; font-weight: bold; color: #800000">#GHA Organisation Development</a>
4

3 回答 3

8

使用&amp;代替普通的&. 您的 href URL 在 HTML 中,因此需要正确转义才能成为有效的 HTML。

于 2010-04-06T10:45:15.557 回答
4

实际上,这不是一个模棱两可的 & 符号,因此使用您建议的 HTML 是完全有效的。当前接受的答案是不正确的(尽管我同意始终编码&符号以避免混淆是个好主意)。

HTML 规范定义了模棱两可的 & 符号如下:

不明确的 & 符号是 U+0026 与字符 (&) 后跟一个或多个字符,范围为​​ U+0030 数字零 (0) 到 U+0039 数字九 (9)、U+0061 拉丁小写字母 A 到U+007A 拉丁小写字母 Z 和 U+0041 拉丁大写字母 A 到 U+005A 拉丁大写字母 Z,后跟 U+003B 分号字符 (;),其中这些字符与命名字符引用部分。

但是,不以分号结尾的实体(如&amp)在属性值中的处理方式不同:

如果字符引用被用作属性的一部分,并且匹配的最后一个字符不是 U+003B 分号字符 (;),并且下一个字符是 U+003D 等号字符 (=) 或在范围内U+0030 数字零 (0) 到 U+0039 数字九 (9)、U+0041 拉丁文大写字母 A 到 U+005A 拉丁文大写字母 Z 或 U+0061 拉丁文小写字母 A 到 U+007A 拉丁文小写字母 Z ,那么,由于历史原因,在 U+0026 与字符 (&) 之后匹配的所有字符都必须未使用,并且不返回任何内容。

但这在这里不适用,因为下一个字符是@.

FWIW,我对此进行了彻底的研究,并在这里写下了我的发现:http: //mathiasbynens.be/notes/ambiguous-ampersands

我还创建了一个在线工具,您可以使用它来检查您的标记中是否存在不以分号结尾的不明确的 & 符号或字符引用,这两者都是无效的。(目前没有 HTML 验证器可以正确执行此操作。)

http://i.stack.imgur.com/nyGPK.png

于 2012-01-17T07:13:09.583 回答
0

我有同样的错误。当我通过邮件发送确认电子邮件链接时,会自动添加 &。它会导致错误,因为我以纯文本格式发送邮件,这就是自动添加 & 的原因。所以,在那种情况下,我发送了一封 HTML 格式的电子邮件。然后问题解决了。

在我的代码中,我刚刚添加了“mail.IsBodyHtml = true”。用于以 html 格式发送电子邮件。

于 2021-07-23T05:02:07.183 回答