2013-01-01 5 views
8

Sto usando il mailgun (anche se questa domanda non ha nulla a che fare con il mailgun) per analizzare la posta in arrivo e il mailgun invierà http l'email analizzata al mio server. Quando ho ricevuto il post, ho ricevuto il codice html per l'email multiparte. voglio visualizzare l'e-mail html mio utente, io sto usando le rotaie, quindi è qualcosa di simile aCome disabilitare lo stile di fondazione o di bootstrap per un blocco di codice html?

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

Tuttavia, ha un aspetto diverso rispetto a quando ho vista la stessa email in Yahoo o Hotmail (lo so diverso il client di posta elettronica mostrerà l'e-mail html in modo diverso, ma il mio aspetto è drasticamente diverso).

Ecco come appare sul mio cliente auto-costruito: html email display in my self-built client

e questo è come appare in Yahoo per la stessa e-mail: html email display in yahoo

Io uso ZURB Foundation come il mio quadro styling. Tuttavia, penso che l'e-mail html abbia un proprio stile in-line, guardo il codice che assomiglia a quello che fa, quindi dovrebbe apparire abbastanza simile ad altri client.

Quindi qual è la procedura migliore per visualizzare l'e-mail html assumendo che si ottenga un blocco di codice html e si desideri visualizzarlo così com'è senza che altri framework sovrascrivano il proprio stile?

ulteriormente più, è possibile disabilitare Foundation (o Twitter bootstrap per questo) lo styling per un blocco di codice, ad esempio, qualcosa come

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

Naturalmente "disable_foundation_styling" è solo la mia immaginazione.

Grazie in anticipo!

!!!!!!!!! Aggiornamento 1/1/2013 !!!!!!!!!!!!!!!

Come suggerito da @Alex L., ho provato ma non funziona in modo tranquillo come previsto. L'iframe rende tutto nella vista come prima (vedi immagine sotto), e ciò è comprensibile, poiché il contenuto dell'iframe è solo la vista di un altro controller, che nel caso rota includerà anche tutti i modelli di layout dell'applicazione. Tuttavia, la barra degli strumenti non è la mia più grande preoccupazione, è ciò che è dentro l'iframe, sembra esattamente come prima. enter image description here

Sospetto che l'iframe non sia il modo per farlo. Guardo il codice di entrambi gmail e yahoo e non usano iframe. Invece usano nid molto profondi per rendere l'email html. La parte dell'email html ha lo stesso codice sia per yahoo che per gmail, tranne per il fatto che yahoo inserisce un id proprio per ogni singolo elemento DOM.

Quindi ora sospetto che ci sia uno stile di base che ha influito sul suo aspetto.

Aggiornerò una volta scoprirò di più.

risposta

2

A mia conoscenza non è possibile indicare a un browser di ignorare selettivamente il CSS della pagina all'interno di un sottoinsieme del DOM. Devi sovrascrivere esplicitamente lo stile esistente della pagina.

Tuttavia, se si dispone di un elemento iframe, il contenuto di tale frame verrà reso indipendentemente dagli stili applicati alla pagina contenente.Quindi è possibile creare un controller separato e visualizzare solo per il rendering del contenuto del messaggio e utilizzarlo come origine per iframe.

+0

sembra plausibile, fammi provare stasera e aggiorna il risultato, grazie mille. – lionel

+0

si scopre che non fa il trucco, per favore guarda il mio aggiornamento nella domanda per maggiori dettagli. Grazie per i suggerimenti però. – lionel

+0

Dovresti utilizzare un layout speciale per il controller e visualizzare quello che viene visualizzato all'interno dell'iframe, oppure il controller dovrebbe eseguire 'rendering: layout => falso'. Zurb, Bootstrap, ecc., Saranno comunque abilitati all'interno dell'iframe se si utilizza il normale layout dell'applicazione per il rendering della pagina in linea. –