电子邮件地址中的&符号(href)

时间:2010-04-06 10:43:33

标签: html html-entities ampersand

我正在使用电子邮件地址,其中有一个&符号, 用户希望“联系我们”链接以打开填充其地址的新消息, 我通常使用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>

3 个答案:

答案 0 :(得分:8)

使用&amp;代替普通&。您的href URL位于HTML内部,因此需要将其正确转义为有效的HTML。

答案 1 :(得分:3)

实际上, 不明确的&符号,因此使用您建议的HTML完全有效。目前接受的答案是不正确的(即使我同意总是编码&符号以避免混淆是个好主意。)

HTML规范定义了不明确的&符号,如下所示:

  

不明确的&符号是U + 0026 AMPERSAND字符(&amp;),后跟一个或多个字符,范围为​​U + 0030 DIGIT ZERO(0)到U + 0039 DIGIT NINE(9),U + 0061 LATIN小写字母A至U + 007A拉丁文小写字母Z和U + 0041拉丁文大写字母A至U + 005A拉丁文大写字母Z,后跟U + 003B SEMICOLON字符(;),其中这些字符与任何字符均不匹配命名字符引用部分中给出的名称。

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

  

如果字符引用被作为属性的一部分使用,并且匹配的最后一个字符不是U + 003B SEMICOLON字符(;),则下一个字符是U + 003D EQUALS SIGN字符(=)或在U + 0030 DIGIT ZERO(0)到U + 0039 DIGIT NINE(9),U + 0041 LATIN CAPITAL LETTER A到U + 005A LATIN CAPITAL LETTER Z或U + 0061 LATIN SMET LETTER A到U + 007A LATIN小写字母Z,然后,由于历史原因,在U + 0026 AMPERSAND字符(&amp;)之后匹配的所有字符必须是未消耗的,并且不返回任何内容。

但这不适用于此,因为下一个字符是@

FWIW,我已经研究了这个,并在这里写了我的发现:http://mathiasbynens.be/notes/ambiguous-ampersands

我还创建了an online tool,您可以使用它来检查您的标记是否有歧义的符号或不以分号结尾的字符引用,这两个都是无效的。 (目前没有HTML验证器正确执行此操作。)

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

答案 2 :(得分:0)

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

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