2017-08-04 11 views
2

メールでメールを送信するときは、<%= variable %>を使用してデータをビューに挿入することがよくあります。メールクライアント(Gmail、Outlook)で自動リンクできるものからメールが届きます。

問題は、あなたが<a>タグのまわりでそれをラップしていないにもかかわらず、variablehttp://google.comのようなものが含まれている場合は、電子メールクライアントは喜んで自動その文字列のためのリンクを作成します、です。それはさまざまなセキュリティ上の問題を引き起こす可能性があります。

ここでは、それぞれのケースで解決策を見つけようとしません。それで、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秒以内に<span>を追加することを避けるために、よりスマートな代替戦略が必要になります。

+1

これは私が最善の答えになる最も近いものです、ありがとうございます! – rubenfonseca

0

あなたのメールにこのCSSを追加できます。

*{ 
    pointer-events: none; 
} 

これは、htmlのように電子メールのすべてのマウスクリックを防止します。

+0

ありがとうございますが、これは私が電子メールに持っている通常の実際のリンクを混乱させるでしょう。 – rubenfonseca

関連する問題