如何创建和发送从Rails应用程序的电子邮件,包含图像和正确的格式?像那些你从Facebook获取和喜欢。

有帮助吗?

解决方案

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

例如,您的通告程序可能是这样的:

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可能看起来像下面这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css" media="screen">
      h3 { color: #f00; }
      ul { list-style: none; }
    </style>
</head>
<body>
  <h3>Your account signup details are below</h3>
  <ul>
    <li>Name: <%= @user.name %></li>
    <li>Login: <%= @user.login %></li>
    <li>E-mail: <%= @user.email_address %></li>
  </ul>
</body>
</html>

正如可以看到HTML视图可以包括<style>标签来定义基本样式。并非所有的HTMLCSS支持,特别是在所有的邮件客户端,但你绝对应该对文本样式足够的格式控制。

嵌入图像有一些技巧,如果你打算显示附加电子邮件。如果你只是在其中包括来自外部网站的电子邮件,可以作为你通常会在<img />使用HTML标签。然而,许多邮件客户端将从直到用户授予它显示阻止这些图像。如果您需要显示连接图像,Rails插件内嵌附件可能是值得一试

有关的Rails邮寄支持的更多信息,所述的ActionMailer文档是一个很大的资源

其他提示

有关的图像,你可以只使用正常image_tag助手已定义的ActionMailer::Base.asset_host = 'http://www.your-domain.com'

我用回形针存储我的图像,以便在我的情况下,我可以使用该图像添加到电子邮件。

image_tag result.photo.url(:small)

如何创建CSS 大HTML格式的电子邮件,这是一个良好的开端。所有电子邮件需要遵循HTML 3.0!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top