Rails可以通过电子邮件客户端(Gmail,Outlook)自动链接的内容

时间:2017-08-04 20:53:30

标签: ruby-on-rails email gmail escaping actionmailer

当您在轨道上发送电子邮件时,通常会使用<%= variable %>在视图中注入数据。

问题是,如果variable包含类似http://google.com的内容,电子邮件客户端会很乐意自动为该字符串创建一个链接,即使您没有将其包裹在{{1}周围} 标签。这可能会导致各种安全问题。

现在我不想尝试为每个案例找到解决方案。那么有一个简单的技巧,我可以在ActionMailer视图上使用,以确保任何潜在的URL都不会被电子邮件客户端自动链接?

2 个答案:

答案 0 :(得分:2)

我不认为有一种简单的方法可以防止这种情况发生,因为它发生在客户端。

欺骗电子邮件客户端的一种方法是在网址中间添加<span>,这可以防止在不更改文字样式的情况下添加链接。

您可以使用帮助程序在特定位置执行此操作,如:

module MailHelper
  def escape_links(text)
    h(text).gsub(/[\.:]/, '<span>\0</span>').html_safe
  end
end

然后在视图模板中将其用作<%= escape_links variable %>

我同意在任何地方添加它都会有点烦人,似乎你想要一个更通用的解决方案。在这种情况下,可能有用的东西(我自己还没有尝试过)是使用email interceptors来应用类似的方法来改变消息体。您需要更智能的替换策略,以避免在<span>的{​​{1}}内添加<a>

答案 1 :(得分:0)

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

    [[[-0.05313011 -0.03707792 -0.00771733  0.25379574  0.06289639]
      [ 0.34355608 -0.00646485 -0.00426668  0.35139424  0.02420545]]

     [[ 0.07838845 -0.04377012 -0.00758527  0.44615552  0.01038414]
      [ 0.          0.          0.          0.          0.        ]]

     [[ 0.16005152 -0.01226684 -0.0048396   0.48419252  0.00086438]
      [ 0.4990865  -0.03458051  0.01733598  0.35500884  0.02000519]]

     [[ 0.73743606 -0.00149451 -0.102979   -0.39292669  0.50247419]
      [ 0.6204772  -0.04163819 -0.4165332  -0.14101879  0.34553975]]]

这将阻止所有鼠标点击电子邮件,如html。