8

私はmailgunを使用して(この質問はmailgunとは関係ありませんが)受信メールを解析し、mailgunは解析したメールをサーバーにhttp投稿します。投稿を受け取ったとき、マルチパートメールのhtmlコードを取得しました。ユーザーにHTMLメールを表示したいのですが、レールを使用しているので、次のようになります。

<div>
  <%= raw(message.body_html) %>
</div>

ただし、yahooまたはhotmailで同じ電子メールを表示した場合とは異なって見えます(異なる電子メールクライアントではhtml電子メールの表示が異なることはわかっていますが、私の見た目は大幅に異なります)。

これが私の自作クライアントでどのように見えるかです: 自分で作成したクライアントでのhtmlメールの表示

そして、これは同じ電子メールのyahooでどのように見えるかです: yahooでのhtmlメール表示

私はスタイリングフレームワークとしてZurbFoundationを使用しています。ただし、電子メールhtmlには独自のインラインスタイルが付属していると思います。コードを見ると、他のクライアントと十分に似ているはずです。

では、HTMLコードのブロックを取得し、他のフレームワークにそのスタイルを上書きさせずにそのまま表示したい場合に、HTMLメールを表示するためのベストプラクティスは何でしょうか。

さらに、たとえば、次のようなコードブロックのFoundation(またはTwitterブートストラップ)スタイルを無効にすることは可能ですか?

<div>
  <% disable_foundation_styling begin %>
    <%= raw(message.body_html) %>
  <% end %>
</div>

もちろん、「disable_foundation_styling」は私の想像にすぎません。

前もって感謝します!

!!!!!!!!! 2013年1月1日更新!!!!!!!!!!!!!!!

@Alex L.が提案したように、私は試しましたが、期待どおりに動作が静かになりません。iframeは、ビュー内のすべてを以前と同じようにレンダリングします(下の図を参照)。これは、iframeコンテンツが別のコントローラーのビューにすぎないため、理解できます。この場合、レールにはすべてのアプリケーションレイアウトテンプレートも含まれます。ただし、ツールバーは私の最大の関心事ではありません。iframe内にあるものが以前とまったく同じように見えることです。 ここに画像の説明を入力してください

私はiframeがそれをする方法ではないかもしれないと思う。Gmailとyahooの両方のコードを調べましたが、iframeを使用していません。代わりに、非常に深いネストを使用してhtmlメールをレンダリングします。HTMLメールの一部には、yahooとgmailの両方で同じコードがありますが、yahooがすべてのDOM要素に独自のIDを挿入する点が異なります。

だから今、私はそれがどのように見えるかに影響を与えたいくつかの基礎スタイリングがあると思います。

詳細がわかり次第更新します。

4

1 に答える 1

2

私の知る限り、DOM のサブセット内でページの CSS を選択的に無視するようブラウザに指示することはできません。ページの既存のスタイルを明示的にオーバーライドする必要があります。

ただし、iframe要素がある場合、そのフレームのコンテンツは、含まれているページに適用されているスタイルとは無関係にレンダリングされます。したがって、メッセージのコンテンツをレンダリングするためだけに別のコントローラーとビューを作成し、それをiframe.

于 2013-01-01T18:48:30.350 に答える