Mailer in Rails中的图像/ CSS不仅适用于Gmail

时间:2016-06-16 08:28:21

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

我正在制作Rails应用。当用户注册时,我使用设计发送确认邮件。

我发现我的图片和css已加载到其他电子邮件提供商(如hotmail)中。但是,我的邮件程序视图中的image / css未在gmail中正确加载。我想知道为什么它只在gmail中不起作用。我把所有CSS都放在内联样式中,因为我看到我无法将CSS文件添加到邮件程序视图中。

production.rb中,我设置了asset_host:

config.action_mailer.asset_host =  ENV['DEFAULT_HOST']

以下是我在Rails中的邮件代码:

<body style="background-color: #F7F7F7;">
<div class="main wrapper clearfix">
    <div style="border: 1px solid #e4e4e4;
        border-radius: 5px;
        margin: 50px auto;
        padding: 20px 50px;
        box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.15);
        background-color: white;
        max-width: 700px;">
        <div style="text-align:center">
            <%= image_tag("logo-green.svg") %>
        </div><br><br>
        <div>
            <p>Welcome <%= @user.first_name %>!</p>

            <p style="line-height: 1.5">Let's confirm your email address. Click the button below to confirm your email.</p>

            <%= link_to 'CONFIRM ACCOUNT',
            confirmation_url(@resource, confirmation_token: @token),
            style: "font-family: Raleway-SemiBold, sans-serif;
                -webkit-font-smoothing: antialiased;
                display: inline-block;
                cursor: pointer;
                text-decoration: none;
                color: white;
                letter-spacing: 1px;
                    padding: 13px 30px;
                    font-size: 0.8em;
                    color: #fff;
                    background-color: #00BA9B;
                    transition: box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);
                    transition-delay: 0.2s;
                    box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.26);
                    margin-top: 25px;
                    margin-bottom: 20px;
                    border-radius:" %>

            <br><br>
            <p style="line-height: 1.5">Thanks,<br>website <br> <a href="www.website.com" style="color: #00BA9B; text-decoration:none">www.website.com</a></p>
            <br>

             <p style="color:grey; font-size:11px;">P.S. If you didn't sign up for website, please ignore this email - apologies for the disturbance.<p>
        </div>
    </div>
</div>
</body>

我发现CONFIRM ACCOUNT上的任何一个标签都不起作用,<%= image_tag("logo-green.svg") %>也没有加载。

很奇怪,它适用于Hotmail,但不适用于Gmail。

很想得到任何建议!

1 个答案:

答案 0 :(得分:1)

我认为您需要将图片定义为邮件中的附件。例如。我在app/mailers/customer_mailer.rb中有一个邮件,其中包含verification_confirmation方法。在这个方法中,我有以下几行:

attachments.inline['logo.png'] = File.read(Rails.root.join("app/assets/images/logo.png"))

现在,在此电子邮件的视图中(即app/views/customer_mailer/verification_confirmation.html.erb我现在可以嵌入这样的图像:

<%= image_tag attachments['logo.png'].url, style: "width: 15vw; min-width: 200px;" %>