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>

+1

这是最接近我得到最好的答案,非常感谢你! – rubenfonseca

您可以将此css添加到您的电子邮件。

*{ 
    pointer-events: none; 
} 

这将防止所有的鼠标点击电子邮件在html中。

+0

谢谢,但这会破坏我在电子邮件上的正常真实链接。 – rubenfonseca