8

我正在使用 mailgun(尽管这个问题与 mailgun 无关)来解析传入的电子邮件,并且 mailgun 会将解析后的电子邮件 http 发布到我的服务器。当我收到帖子时,我得到了多部分电子邮件的 html 代码。我想向我的用户显示 html 电子邮件,我正在使用 rails,所以它类似于

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

但是,它看起来与我在 yahoo 或 hotmail 中查看相同的电子邮件时不同(我知道不同的电子邮件客户端会以不同的方式显示 html 电子邮件,但我的看起来完全不同)。

这是它在我的自建客户端上的外观: 我自建客户端的html邮件显示

这就是雅虎在同一封电子邮件中的外观: 雅虎中的html电子邮件显示

我使用 Zurb Foundation 作为我的样式框架。但是,我认为电子邮件 html 带有自己的内联样式,我查看了它看起来确实如此的代码,然后它应该与其他客户端看起来足够相似。

那么,假设您获得一段 html 代码并希望按原样显示它而不让其他框架覆盖其样式,那么显示 html 电子邮件的最佳做法是什么?

此外,是否可以禁用代码块的 Foundation(或 twitter bootstrap)样式,例如,类似

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

当然“disable_foundation_styling”只是我的想象。

提前致谢!

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

正如@Alex L. 所建议的那样,我尝试过,但它并没有像预期的那样安静地工作。iframe 像以前一样渲染视图中的所有内容(见下图),这是可以理解的,因为 iframe 内容只是另一个控制器的视图,在这种情况下,rails 也将包括所有应用程序布局模板。但是,工具栏不是我最关心的问题,它是 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 回答