2017-08-04 145 views
2

當您在rails上發送電子郵件時,通常使用<%= variable %>在視圖中注入數據。Rails轉義可通過電子郵件客戶端(Gmail,Outlook)自動鏈接的東西

問題是,如果variable包含有類似http://google.com,郵件客戶端會自動愉快創建一個鏈接,該字符串,即使你沒有它環繞的<a>標籤。這可能會導致各種安全問題。

現在我不想嘗試爲每種情況找到解決方案。那麼是否有一個簡單的技巧可以在ActionMailer視圖上使用,以確保任何潛在的url不會被電子郵件客戶端自動鏈接?

回答

2

我不認爲有一種簡單的方法就像設置防止這種情況,因爲它發生在客戶端。

欺騙電子郵件客戶端的一種方法是在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

0

您可以將此css添加到您的電子郵件。

*{ 
    pointer-events: none; 
} 

這將防止所有的鼠標點擊電子郵件在html中。

+0

謝謝,但這會破壞我在電子郵件上的正常真實鏈接。 – rubenfonseca

相關問題