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>
的 href
s.
中添加 <span>
s
当您在 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>
的 href
s.
<span>
s