HTML5中应该使用mailto吗?

17

大约一年前,我决定停止使用mailto标签,因为它经常会使用户感到烦恼。它会弹出一个电子邮件程序,而用户可能此时并不使用它,这可能还需要时间来加载,并且当用户单击看起来像链接的东西时,这也可能不是用户想做的事情。

相反,我决定只显示电子邮件地址而不使用mailto标签。我认为两种方式可能都会产生垃圾邮件。

我的问题是,mailto标签是设置电子邮件链接的接受方式,还是好人/公司会避免使用它们?其次,如果它们都会创建垃圾邮件,是否有方法可以防止它们生成垃圾邮件?我曾经看到过mailto被放在注释中,但这似乎是一种破解的方式。


2
+1 是为了清晰地解释停止使用 mailto 的原因。 - Dr. belisarius
4个回答

20

在HTML4和HTML5中,你应该使用 mailto: URI scheme

如果用户不想加载电子邮件客户端,他就不会点击链接。
不使用 mailto: 只会让发送电子邮件更加麻烦。

无论是否加入 mailto:,任何一款性能合理(或不合理)的垃圾邮件收集器都可以捕获到电子邮件地址。

一个有效的防止此类情况发生的方法是,在Javascript中包含(微不足道的)加密版本的电子邮件地址并将其写入文档中。
这样,不执行Javascript的任何垃圾邮件收集器都无法获取您的地址。
如果您担心使用Javascript的垃圾邮件收集器,您可以在mousemove和/或5秒后才显示电子邮件地址。
出于可访问性原因,并为了那些禁用Javascript的人,您可能需要在纯文本中包含乱序形式的地址。(例如:SLaks(SHIFT+2)MyDomain(period)com
您可以编写服务器端脚本自动生成电子邮件地址的此加密版本。

由于明显的原因,我不会分享代码。(为了使其效果更好,每个站点都应该有不同的实现)


对于那些担心会被使用Javascript的垃圾邮件爬虫侵扰的人,另一种方法是将电子邮件写成图像(然后将该图像放在您的网站中)。不幸的是,我们无法完全避免垃圾邮件。 - pablofiumara
@pablofiumara:你严重低估了现代OCR的能力。CAPTCHA为什么这么难,其中有原因。 - SLaks
如果你正在使用电子邮件,垃圾邮件机器人已经拥有了你的电子邮件地址。在现代社会中,试图通过隐藏你的电子邮件地址来避免垃圾邮件就像试图通过涂刷房屋号码来避免垃圾邮件一样。把时间投入到更好的垃圾邮件过滤器中,并不要让真正的人难以联系到你。 - lfalin
@lfalin 不一定。如果您使用像SpamGourmet这样的服务(我自2010年以来一直在使用),那么您可以通过分发别名并在泄漏时撤回它们,成功地防止垃圾邮件机器人知道您的电子邮件地址。除了我的Kickstarter地址泄露需要更改之外,我记得收到的所有垃圾邮件都是因为我太懒了,没有加强我的网站上的联系表单。(现在已经解决了这个问题。) - ssokolow

7
我经常看到公司使用服务器处理的联系表单,而不是发布电子邮件地址。我认识的大多数网络极客都倾向于使用某种JavaScript混淆来编写他们的电子邮件地址,这将使无JS浏览器/用户陷入困境。一个折衷的办法是使用图片。(呕吐。)
说到你的问题,如果合适的话,我绝对会一直使用mailto:。它是一种有意义的方式,可以向浏览器传达如何处理链接。用户可以自由配置要在哪个电子邮件客户端中打开这些链接,使用相关的浏览器和/或操作系统选项。

0
我建议只在显示文本为电子邮件地址时使用mailto协议;否则,用户可能不明白自己正在单击mailto链接。
至于垃圾邮件,如果您将电子邮件地址放入HTML中,则易受垃圾邮件攻击。您可以使用JavaScript动态地将电子邮件地址插入到DOM中,但没有JavaScript的用户将无法查看电子邮件地址。

0

我的看法是,使用mailto不是与HTML5或任何其他标记规范相关的问题,而是个人/公司编码约定的问题。如果您选择弃用该协议,那么没关系,但这不会对垃圾邮件产生任何显着影响。

将mailto替换为联系表单并查看响应率的差异可能很有用...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接