2013-01-01 6 views
8

Ich benutze mailgun (obwohl diese Frage nichts mit mailgun zu tun hat), um die eingehenden E-Mails zu analysieren und mailgun wird die geparste E-Mail an meinen Server senden. Als ich die Post erhielt, erhielt ich den HTML-Code für die mehrteilige E-Mail. Ich möchte die HTML-E-Mail an meine Benutzer anzuzeigen, ich Schienen verwende, so ist es so etwas wieWie kann man Foundation- oder Bootstrap-Stile für einen HTML-Codeblock deaktivieren?

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

es aber anders aussieht, als wenn ich die gleiche E-Mail in yahoo oder hotmail sehen (ich weiß, verschiedene E-Mail-Client wird die HTML-E-Mail anders angezeigt, aber meine sieht drastisch anders aus).

Hier ist, wie es auf meinem selbst gebauten Client sucht: html email display in my self-built client

Und das ist, wie es für die gleiche E-Mail in yahoo aussieht: html email display in yahoo

I ZURB Foundation als mein Styling Framework verwenden. Allerdings denke ich, dass die E-Mail html mit einem eigenen In-Line-Design geliefert wird. Ich schaue mir den Code an, der so aussieht, wie er es tut, und dann sollte er mit anderen Clients ähnlich aussehen.

Also, was ist die beste Praxis, HTML-E-Mail anzuzeigen, vorausgesetzt, Sie erhalten einen Block von HTML-Code und möchten es so anzeigen, wie es ist, ohne andere Frameworks seinen Stil zu überschreiben?

Weiterhin ist es möglich, Foundation (oder Twitter Bootstrap was das betrifft) Styling für einen Block von Code, zum Beispiel so etwas wie

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

Natürlich „disable_foundation_styling“ meine Phantasie ist nur zu deaktivieren.

Vielen Dank im Voraus!

!!!!!!!!! Update 1/1/2013 !!!!!!!!!!!!!!!

Als @ Alex L. vorgeschlagen, habe ich versucht, aber es funktioniert nicht ruhig wie erwartet. Der Iframe rendert alles in der Ansicht wie zuvor (siehe Bild unten), und das ist verständlich, da der Iframe-Inhalt nur die Ansicht eines anderen Controllers ist, der in den Fallschienen auch alle Anwendungslayout-Vorlagen enthält. Allerdings ist die Symbolleiste nicht meine größte Sorge, es ist, was innerhalb des Iframe genau so aussieht wie zuvor. enter image description here

Ich vermute, iframe ist möglicherweise nicht der Weg, es zu tun. Ich schaue auf den Code von Google Mail und Yahoo, und sie verwenden nicht iframe. Stattdessen verwenden sie sehr tief verschachtelt, um die HTML-E-Mail zu rendern. Der Teil der HTML-E-Mail hat den gleichen Code für Yahoo und Gmail, außer dass Yahoo eine eigene ID für jedes einzelne DOM-Element einfügt.

So, jetzt ich vermute, dass eine Stiftung Styling, die betroffen, wie es aussieht.

Ich werde aktualisieren, sobald ich mehr erfahren.

Antwort

2

Meines Wissens ist es nicht möglich, einen Browser zu instruieren, um selektiv Ihrer Seite CSS innerhalb einer Teilmenge des DOM zu ignorieren. Sie müssen den vorhandenen Stil der Seite explizit überschreiben.

Wenn Sie jedoch ein iframe Element haben, wird der Inhalt dieses Rahmens unabhängig von den auf der umgebenden Seite verwendeten Stilen gerendert.So könnten Sie einen separaten Controller erstellen und nur zum Rendern des Inhalts Ihrer Nachricht anzeigen und diesen als Quelle für die iframe verwenden.

+0

das klingt plausibel, lassen Sie mich es heute Abend versuchen und aktualisieren Sie das Ergebnis, vielen Dank. – lionel

+0

stellt sich heraus, tut nicht den Trick, bitte beachten Sie mein Update in der Frage für weitere Details. Danke für die Vorschläge obwohl. – lionel

+0

Sie sollten ein spezielles Layout für den Controller und die Ansicht verwenden, die im Iframe gerendert werden, oder der Controller sollte 'render: layout => false'. Zurb, Bootstrap usw. werden weiterhin innerhalb des iframe aktiviert, wenn Sie das normale Anwendungslayout zum Rendern der Inline-Seite verwenden. –

Verwandte Themen