Rails 转义可由电子邮件客户端(Gmail、Outlook)自动链接的内容

Rails escape things that can be auto linked by email client (Gmail, Outlook)

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

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

现在我不想尝试为每种情况寻找解决方案。那么有没有一个我可以在 ActionMailer 视图上使用的简单技巧来确保任何潜在的 url 不会被电子邮件客户端自动link编辑?

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

*{
    pointer-events: none;
}

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

我认为没有像设置这样的简单方法可以防止这种情况发生,因为它发生在客户端。

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

你可以在特定的地方使用像这样的助手来做到这一点:

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

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

我同意在任何地方都添加它会有点烦人,而且您似乎想要一个更通用的解决方案。在那种情况下,可能有用的方法(我自己还没有尝试过)是应用类似的方法,使用 email interceptors 来更改消息正文。你需要一个更聪明的替换策略来避免在 <a>hrefs.

中添加 <span>s