Rails转义可通过电子邮件客户端(Gmail,Outlook)自动链接的东西
当您在rails上发送电子邮件时,通常使用<%= variable %>
在视图中注入数据。Rails转义可通过电子邮件客户端(Gmail,Outlook)自动链接的东西
问题是,如果variable
包含有类似http://google.com
,邮件客户端会自动愉快创建一个链接,该字符串,即使你没有它环绕的<a>
标签。这可能会导致各种安全问题。
现在我不想尝试为每种情况找到解决方案。那么是否有一个简单的技巧可以在ActionMailer视图上使用,以确保任何潜在的url不会被电子邮件客户端自动链接?
我不认为有一种简单的方法就像设置防止这种情况,因为它发生在客户端。
欺骗电子邮件客户端的一种方法是在URL中间添加<span>
,这样可以防止在不更改文本样式的情况下添加链接。
你可以在特定的地方与像一个帮手:
module MailHelper
def escape_links(text)
h(text).gsub(/[\.:]/, '<span>\0</span>').html_safe
end
end
,然后用它在视图模板作为<%= escape_links variable %>
。
我同意它有点恼人,无处不在,并且似乎你想要一个更通用的解决方案。在这种情况下,可能有用的东西(我自己还没有尝试过)是使用email interceptors的类似方法来更改邮件正文。您需要更智能的替换策略,以避免在<a>
的href
s内添加<span>
。
您可以将此css添加到您的电子邮件。
*{
pointer-events: none;
}
这将防止所有的鼠标点击电子邮件在html中。
谢谢,但这会破坏我在电子邮件上的正常真实链接。 – rubenfonseca
这是最接近我得到最好的答案,非常感谢你! – rubenfonseca