2013-01-01 14 views
8

我正在使用mailgun(雖然這個問題與mailgun無關)來解析傳入的電子郵件,並且mailgun會將http解析後的郵件發送到我的服務器。 當我收到帖子時,我收到了多部分電子郵件的html代碼。 我想顯示HTML郵件給我的用戶,我使用的軌道,因此它像如何禁用一段html代碼的基礎或引導樣式?

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

然而,這看起來不同的比它時,我認爲在Yahoo或Hotmail相同電子郵件(我知道不同電子郵件客戶端將以不同的方式顯示html電子郵件,但我看起來截然不同)。

這裏是如何看我自建的客戶端上: html email display in my self-built client

,這是它的外觀在雅虎同一個電郵: html email display in yahoo

我用Zurb基金會作爲我的造型框架。不過,我認爲電子郵件HTML具有自己的內聯樣式,我看它看起來像它的代碼,然後它應該與其他客戶端看起來相似。

那麼,什麼是最好的做法,以顯示HTML電子郵件假設你的HTML代碼塊,並希望將其顯示爲是沒有讓其他框架覆蓋它的風格?

更進一步,是有可能禁用基金會(或Twitter的引導爲此事)造型爲一個代碼塊,例如,像

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

當然「disable_foundation_styling」只是我的想象。

在此先感謝!

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

正如@亞歷L.建議,我試過了,但它並沒有按預期安靜工作。 iframe像之前一樣呈現視圖中的所有內容(見下圖),這是可以理解的,因爲iframe內容只是另一個控制器的視圖,在這種情況下,rails也會包含所有應用程序佈局模板。但是,工具欄並不是我最關心的問題,它的內部框架就像以前一樣。 enter image description here

我懷疑iframe可能不是這樣做的方式。我看看Gmail和雅虎的代碼,他們不使用iframe。相反,他們使用非常深的嵌套來呈現html電子郵件。 html電子郵件的部分對於yahoo和gmail都有相同的代碼,只是yahoo爲每個DOM元素插入一個自己的id。

所以現在我懷疑有一些基礎造型影響了它的外觀。

我會更新一次,我發現更多。

回答

2

據我所知,不可能指示瀏覽器有選擇地忽略DOM子集內的頁面CSS。您必須明確地覆蓋該頁面的現有樣式。

但是,如果有一個iframe元件,該幀中的內容將被渲染的獨立地施加到包含頁面的任何樣式。因此,您可以創建一個單獨的控制器和視圖,僅用於呈現郵件的內容,並將其用作iframe的源。

+0

這聽起來似乎合理,讓我今晚試試並更新結果,非常感謝。 – lionel

+0

事實證明沒有做到這一點,請參閱我的更新問題的更多細節。 感謝您的建議,但。 – lionel

+0

你應該爲控制器和視圖使用一個特殊的佈局,或者控制器應該執行'render:layout => false'。如果您使用正常的應用程序佈局呈現內聯頁面,Zurb,Bootstrap等仍將在iframe內啓用。 –