如何使用Rails中的css和图像创建电子邮件?

如何从Rails应用程序创建和发送包含图像和正确格式的电子邮件? 就像你从facebook那里得到的那样。

假设您知道如何使用ActionMailer从Rails发送普通的纯文本电子邮件,要使HTML电子邮件正常工作,您需要为电子邮件设置内容类型。

例如,您的notifer可能如下所示:

 class MyMailer < ActionMailer::Base def signup_notification(recipient) recipients recipient.email_address_with_name subject "New account information" from "system@example.com" body :user => recipient content_type "text/html" end end 

请注意content_type "text/html"行。 这告诉ActionMailer发送一封内容类型为text/html的电子邮件,而不是默认的text/plain

接下来,您必须使邮件程序视图输出HTML 。 例如,您的视图文件app/views/my_mailer/signup_notification.html.erb可能如下所示:

        

Your account signup details are below

  • Name: <%= @user.name %>
  • Login: <%= @user.login %>
  • E-mail: <%= @user.email_address %>

如您所见, HTML视图可以包含

标记来定义基本样式。 并非所有HTMLCSS都受支持,尤其是在所有邮件客户端上,但您应该对文本样式进行足够的格式控制。

如果您计划显示附加的电子邮件,嵌入图像会有点诡计。 如果您只是包含来自外部网站的电子邮件,则可以像在HTML一样使用标记。 但是,许多邮件客户端将阻止这些图像显示,直到用户授权它。 如果您需要显示附加图像,Rails插件内联附件可能值得一看。

有关Rails邮件支持的更多信息, ActionMailer文档是一个很好的资源

对于图像,您可以在定义ActionMailer::Base.asset_host = 'http://www.your-domain.com'后使用普通的image_tag帮助程序

我使用Paperclip来存储我的图像,所以在我的情况下,我可以使用它将图像添加到电子邮件中。

 image_tag result.photo.url(:small) 

阅读如何使用CSS创建出色的HTML电子邮件 ,这是一个良好的开端。 所有电子邮件都需要遵循HTML 3.0!