ActionMailer,发送带有背景图片的电子邮件

时间:2012-12-24 17:44:02

标签: html css ruby-on-rails ruby actionmailer

我正在尝试发送一封HTML电子邮件,这对我们的用户来说基本上只是一个巨大的图像。到目前为止,我还没有尝试任何花哨的东西。我的观点如下:

<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <style type="text/css">
      body {
         background-image: url('https://s3.amazonaws.com/my-bucket/image.png');
         background-repeat: repeat-y no-repeat;
         background-color: #333;
         margin: 0;
         padding: 0;
      }
    </style>
  </head>
  <body>
  </body>
</html>

我并不完全担心在所有邮件客户端上都有这项工作,但主要的工作会很棒。当我使用ActionMailer发送此电子邮件时,我只收到一条空消息。看起来图像不会被应用,至少在gmail Web客户端中。

任何建议都会很棒。我也希望将整个图像点击进入iTunes商店链接,但是当我将图像显示出来时,我会看到那部分。

2 个答案:

答案 0 :(得分:0)

您确定您的文件可供公众访问吗?尝试直接访问该URL。 如果没有,您必须在亚马逊桶中将其标记为可公开访问。

以下是来自我们的一个邮件的片段,其中包含S3(.erb文件)上的图片,并且工作正常:

Dear <b><%= @card.first_name %></b>,
<br/><br/>
Thank you for being a member with us since <strong><%= @card.start_date.strftime("%d %b %Y") %></strong>.
<br/><br/>

 ...

 Warm Regards,
 <br/>
Team MyCompany
<br/><br/>
<% if Settings.show_banner_image_in_email %>
  <div style="text-align:center;">
    <a href="<%= Settings.website_url %>">
      <img src="http://cdn2.mywebsite.com/images/EmailFooterBanner.jpg" width="590px" height="118px" />
    </a>
  </div>
<% end %>

<b>Happy to Help!</b>
<br/>Voice: 23424234242342
<br/>E-mail: <a href="mailto:customercare@mywebsite.com">customercare@mywebsite.com</a>
<br/>Web: <a href="<%= Settings.website_url %>"><%= Settings.website_url %></a>
<br/>

编辑: 如果您的app / mailers中的模型名为 UserMailer ,则必须将您的邮件程序视图存储在视图下名为“ user_mailer ”的文件夹中。那是它被拿起来的时候。

答案 1 :(得分:0)

电子邮件中的所有css都应该是内联的。考虑使用像premailer这样的宝石帮助内联它。

https://github.com/fphilipe/premailer-rails3