有没有办法禁用电子邮件引擎自动将URL转换成超链接?

8

1
你可以尝试使用一些span标签来打断URL。例如:<p>ht<span>tp://www.goo</span>gle.com</p> - David K. Hess
谢谢你,David。我会尝试一下并告诉你结果的。 - user1041029
1
它没有起作用,Outlook仍然将其应用为超链接。 - user1041029
这个回答解决了你的问题吗?如何禁用电子邮件链接? - Sumit
10个回答

18

我喜欢使用零宽度的不间断空格:&#65279;

我会在关键位置放置它,以便URL不被识别为URL,就像这样:http&#65279;://www&#65279;domain.&#65279;com。

这种策略在各个平台和渲染客户端中都有效。它的优点有两个:1)它可以防止客户端将文本自动呈现为链接,2)与其他“非断开”零宽度空格ASCII码(即&#8302;)不同,如果您的URL需要它,它会包装整个URL(而不仅仅是零宽度空格后面的部分)。

试一下吧。


1
这真的很好。唯一的问题是,如果用户复制/粘贴链接,它会带有非断行空格。有人找到了一种方法可以在没有这些“隐形”空格的情况下复制吗? - obai

14

实际上,这要归功于我的同事。我们测试过的所有客户端都似乎可以使用。

www.websitename.<img src="" width="0" height="0">com

一个0宽度和0高度的空图像标签。将其插入点和以下文本(在这种情况下为“com”)之间。

我们尝试了几件事情后,他不知何故突然有了灵感/创意。

字符之间没有可见间距。不确定如果直接复制/粘贴该字符串到浏览器中会发生什么。但它达到了我的目的,即不允许电子邮件客户端自动将其变成超链接。


结果发现这个方案在除了雅虎邮箱以外的所有客户端都行。我们添加了 Scott 建议的零宽不换行空格,似乎解决了所有问题。 但是在某些客户端上,空图像标记似乎增加了一些额外的 margin-bottom 或其他东西。如果我找到解决方法,我会发布更新。 - janusoo
另外,在www[点]和网站名称[点]之后加上它。雅虎尝试将仅包含www[点]的文本转换为超链接,这让我有些惊讶。因此,更新后的版本如下:www.<img src="" width="0" height="0" />websitename.<img src="" width="0" height="0" />com - janusoo
严肃的问题:这是格式良好的HTML吗? - Keyslinger

5

这个对我有用。它是Scott的回答和David K. Hess的评论的结合。

使用<span>来拆分URL。 但是,您需要以一种方式拆分它,使得当邮件客户端扫描它时不会将它们匹配为URL。

eg: http<span>://</span><span>google.</span>com 

这太完美了,这段文字仍然可以轻松地复制到浏览器中。 - undefined

2

我遇到了类似的问题,例如"chequed.com"和"interviewing.com"这样的单词在我的消息中创建了超链接,而我并不想要它。

我首先尝试编辑HTML链接标签,但是没有找到任何标签。

之后,我在电子邮件文本中使用了8pt字体(如果我使用的是ESP,则应该使用1px),添加了一个非常小的空格。

如果你也遇到了同样的问题,这个方法或许能够帮助你。


2

我联系了Gmail的支持,并与苹果客户服务部门经理交谈。这是预期的行为,无法防止。这些黑客攻击不再起作用,如果实施可能会导致您的IP被列为网络钓鱼操作。您在围绕安全问题打转。我建议您修改内容策略。

目前唯一能做的就是将所有电子邮件地址包装在mailto链接中,将电话号码包装在tel链接中。截至2017年,没有其他选择。


有CSS和内联两种方法可以实现这个功能。很多网站都推荐使用这些策略,而且没有一个网站提到过钓鱼或黑名单的问题。我的回答使用简单的CSS来实现这个更改:在这里 - Syfer
在我看来,这不仅仅是“绕过安全问题”,而是试图提高安全性。可点击的链接表达了权威性。对于许多电子邮件客户端而言,如果攻击者能够将纯文本“example.com”插入电子邮件中,则它就变成了可点击的。有一种支持的方法可以告诉客户端不要使链接可点击,这并不是一个完整的解决方案,但它是朝着正确方向迈出的一步。 - phylae
1
同意:鉴于现在顶级域名可以是任何东西(“.calvinklein”,“.onyourside”,“.americanfamily”以及其他数百个存在),即使我们只允许文件名中包含字母数字和点,我们也不能发送包含用户提供的文件名的电子邮件,因为它们仍然可能成为恶意链接。这使得任何输入或输出过滤安全措施都变得荒谬。 - Dewi Morgan

2

1
感谢您的建议JP,我正在考虑从脚本角度关闭自动超链接,因为链接必须发送给数千封电子邮件,所以要求他们执行这些步骤很麻烦。 - user1041029
很抱歉,超链接的自动转换是在客户端层面完成的。 - JimmyPena
这与我无关,但我很难理解URL不能是超链接的要求。 - JimmyPena
1
@JimmyPena:在标题中:“现在已与Paypal.com集成!”,或者在可能包含用户名“example.com”的高分表中,通常不希望这些文本包含蓝色链接。任何可能包含用户提供内容的自动化电子邮件都不应允许恶意用户在该内容中创建潜在的恶意链接。如果邮件客户端将非链接的用户提供的用户名(例如'see.for.example.bible')或文件列表(例如“example.bible,example.com,...”)转换为链接,则可能不仅是样式问题,而且是安全问题。 - Dewi Morgan

2

我的解决方案是

<a href="#" style="text-decoration:none!important">http://...</a>

2

我曾经成功地使用janusoo的解决方案多年,但出现了一些客户端会产生换行的问题。我发现可以通过&#8203;来继续进行。

www.websitename.&#8203;com

我一直在使用这个解决方案,但是在多个客户端中,这会导致电子邮件底部显示“[消息被裁剪] 查看完整消息”。可能与此字符不符合标准UTF-8有关。 - Ahmed Mohamedeen

1
如果你使用&#46;来替换超链接中的'.',你就可以解决Outlook 2007中的超链接URL问题。

1
你可以尝试使用CSS重新排列文本。
<p>www.example.<span style="float:left">http://</span>com/</p>

如果带有“http://”的部分仍然被标记为URL,请尝试在不同位置中断。

另一个技巧是用其他Unicode字符替换句点,看起来像句点但实际上不是。例如,“⠄”(U-2840)是盲文单点。

唉(!)我没有任何可以测试此功能的Microsoft应用程序,但祝你好运。 :)


谢谢ghoti,我尝试了这个方法,但U-2840只显示为一个方框,而不是一个点。然后我尝试了一个句号的Unicode编码.或.,但在Outlook中它自动成为了超链接,我甚至没有添加"http://"作为链接的一部分。 - user1041029
嗯,“full stop”就是句号,所以这并不能让你更进一步。如果U-2840是你正在使用的字体中的一个方框,你可以使用一个中间点(·)或一个点运算符(⋅)。当然,如果你可以使用替代点来混淆Outlook,那么你可能也可以放弃style="float:left"的转移。 - ghoti
中间点在Outlook中显示正确,没有超链接,但是除非这些“中间点”被替换为句号,否则在浏览器中将无法识别“url”。在Outlook中,style="float:left" 似乎也不起作用,因为链接已经混乱,文本已经被重新定位,例如http://.goog.comwww在Outlook中显示。 - user1041029
1
嗨ghoti,抱歉让你感到困惑,超链接必须被删除,但是当粘贴到浏览器中时仍然可以访问。我想确保URL不会被视为可点击的链接,而是纯文本。 - user1041029
1
我打算放弃这个。它要么是一个超链接,要么不是。你可以影响链接的显示,使其没有下划线,但如果需要在同一HTML中“删除超链接”以便在浏览器中呈现为链接,那么我怀疑你会很难做到。 - ghoti
显示剩余2条评论

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