2013-01-01 11 views
8

Używam mailgun (chociaż to pytanie nie ma nic wspólnego z mailgunem) do parsowania poczty przychodzącej i mailgun będzie http post parsowany e-mail do mojego serwera. Po otrzymaniu tego posta otrzymałem kod html dla wieloczęściowej wiadomości e-mail. chcę, aby wyświetlić wiadomości e-mail HTML na moim użytkownika, używam szyn, więc jest to cośJak wyłączyć podstawową lub bootstrapową stylizację dla bloku kodu html?

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

to jednak wygląda inaczej niż to robi kiedy zobaczyć ten sam e-mail w yahoo lub hotmail (wiem inny klient poczty e-mail będzie wyświetlał e-mail HTML w inny sposób, ale mój wygląda drastycznie inaczej).

Oto jak to wygląda na moim własnym wbudowanym klientem: html email display in my self-built client

I tak to wygląda w yahoo dla tego samego e-mail: html email display in yahoo

używam ZURB Fundacji moim ramach stylizacji. Jednak myślę, że html e-mail pochodzi z własnym stylem in-line, patrzę na kod, który wygląda tak, jak to robi, wtedy powinien wyglądać podobnie z innymi klientami.

Jaka jest najlepsza praktyka wyświetlania wiadomości e-mail w formacie HTML, zakładając, że otrzymujesz blok kodu HTML i chcesz wyświetlać go tak, jak jest, bez pozwolenia innym ramom na nadpisywanie jego stylu?

Co więcej, możliwe jest wyłączenie Foundation (lub twitter bootstrap dla tej sprawy) stylizacji dla bloku kodu, na przykład, coś jak

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

Oczywiście „disable_foundation_styling” to tylko moja wyobraźnia.

Z góry dziękuję!

!!!!!!!!! Aktualizacja 1/1/2013 !!!!!!!!!!!!!!!

Jak sugerował @Alex L., próbowałem, ale nie działa on tak, jak powinien. Element iframe renderuje wszystko w widoku tak jak poprzednio (patrz rysunek poniżej), a to zrozumiałe, ponieważ treść elementu iframe jest po prostu widokiem innego kontrolera, który w przypadku szyn zawiera również wszystkie szablony układu aplikacji. Jednak pasek narzędzi nie jest moim największym zmartwieniem. To, co znajduje się wewnątrz elementu iframe, wygląda dokładnie tak, jak wcześniej. enter image description here

Podejrzewam, że element iframe może nie być sposobem na zrobienie tego. Patrzę na kod zarówno Gmaila, jak i Yahoo, i nie używają one elementu iframe. Zamiast tego używają bardzo głębokiego zagnieżdżonego, aby renderować e-mail HTML. Część wiadomości e-mail w formacie HTML ma taki sam kod zarówno dla yahoo, jak i Gmaila, z wyjątkiem tego, że yahoo wstawi własny identyfikator dla każdego elementu DOM.

Tak więc podejrzewam, że istnieje pewna stylizacja fundamentów, która miała wpływ na wygląd.

Będę aktualizował, gdy tylko dowiem się więcej.

Odpowiedz

2

Według mojej wiedzy, nie można nakazać przeglądarce selektywnego zignorowania kodu CSS strony w podzbiorze DOM. Musisz jawnie zastąpić istniejący styl strony.

Jeśli jednak masz element iframe, zawartość tej klatki będzie renderowana niezależnie od jakichkolwiek stylów zastosowanych do strony zawierającej.Można więc utworzyć osobny kontroler i wyświetlić tylko w celu wyświetlenia zawartości wiadomości i użyć jej jako źródła dla iframe.

+0

To brzmi wiarygodne, pozwól mi spróbować dziś wieczorem i zaktualizować wynik, wielkie dzięki. – lionel

+0

okazuje się, że nie działa, zobacz moją aktualizację w pytaniu, aby uzyskać więcej szczegółów. Dzięki za sugestie. – lionel

+0

Powinieneś używać specjalnego układu dla kontrolera i widoku, który jest renderowany wewnątrz elementu iframe, lub kontroler powinien wykonać 'render: layout => false'. Zurb, Bootstrap itd. Będą nadal włączone w elemencie iframe, jeśli użyjesz normalnego układu aplikacji do renderowania strony wstawianej. –

Powiązane problemy