Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将Mail-in-Rails的外部CSS转换为内联CSS_Ruby On Rails_Css_Ruby_Email_Gmail - Fatal编程技术网

Ruby on rails 将Mail-in-Rails的外部CSS转换为内联CSS

Ruby on rails 将Mail-in-Rails的外部CSS转换为内联CSS,ruby-on-rails,css,ruby,email,gmail,Ruby On Rails,Css,Ruby,Email,Gmail,我正在尝试创建一个应用程序,它将发送风格厚重的电子邮件,并且除了谷歌的Gmail之外,还需要客户端工作。我研究了这个问题,它看起来像是Gmail从外部文件中剥离了CSS,或者是嵌套在“样式”标签中的CSS。是否存在将样式从外部文件移动到内联文件的简单方法 需要: <style> .wide { width: 100px; } .cell { display: block; } </style> <span class="wide cell">Sample<

我正在尝试创建一个应用程序,它将发送风格厚重的电子邮件,并且除了谷歌的Gmail之外,还需要客户端工作。我研究了这个问题,它看起来像是Gmail从外部文件中剥离了CSS,或者是嵌套在“样式”标签中的CSS。是否存在将样式从外部文件移动到内联文件的简单方法

需要:

<style>
.wide { width: 100px; }
.cell { display: block; }
</style>
<span class="wide cell">Sample</span>

.wide{width:100px;}
.cell{display:block;}
样品
并将其转换为:

<div class="wide cell" style="width: 100px; display: block;">Sample</div>
示例

谢谢

您的推理只有一个问题……许多样式,甚至内联样式,都不受支持

这是你的参考资料

在您的示例中,您使用了display:标记,Outlook 07不支持该标记+

我的公司每天发送数千封电子邮件,我经常参与其中。在实践中,内联样式是可行的,但它并不像将所有内容都内联一样简单,而且它会起作用。你必须非常小心你使用什么以及如何使用它。我从一开始就采用了纯HTML格式,几乎所有的事情都是用表格进行布局的。基本上,这是我发现的让事情在几乎100%的时间里正常运转的唯一方法


如果你正在将此功能构建到一个将得到大量使用的应用程序中,我也强烈建议通过他们的API来构建。虽然您可以编写高质量的输出代码,但毫无疑问,Microsoft会找到一些方法使您的有效代码无法工作。Acid上的电子邮件将使用Microsoft当时使用的任何疯狂来显示您的电子邮件是否有效。这是纯粹的天才,对于那些认真想发送大量电子邮件的人来说是必需的。不,我不在公司工作……

添加了
premailer

def premailer(message)
  message.text_part.body = Premailer.new(message.text_part.body.to_s, with_html_string: true).to_plain_text
  message.html_part.body = Premailer.new(message.html_part.body.to_s, with_html_string: true).to_inline_css

  return message
end

def welcome(user)
  @user = user

  message = mail ...
end

以下是一些您可以查看的宝石:

  • 还是铁轨
  • (以上版本的分叉)

我在写这个答案时没有赢家,但premailer似乎是最新的。

没有可用的来源,但这里有一个链接:@thirtydot这正是我要找的!你知道他们是否提供API吗?我不知道。可能有一个类似的工具,有可用的源代码。我会在谷歌上搜索“风格内联”,看看是否有任何可用的源代码。如果它是Ruby,对你来说太好了,否则你就必须移植它。我不知道您希望使用内联功能的频率有多高(或者它的“任务关键性”程度有多高),但可能值得考虑一种简单快捷的方法,即直接向此处发送POST请求():谢谢。我可以修改样式表以只使用支持的文件,但是我不想将所有样式都内联移动。谢谢,我已经使用了premailer(参见答案)。干杯现在还有-一个分叉的邮件样式。如果你在轨道上,我推荐Roadie。实现起来不容易。还有一个gem,我可以很快地将它安装到位,没有任何问题。(我不知道它与Roadie相比如何。)谢谢@JasonSwett,我已经将它添加到列表中。