2009-08-16 3 views
2

Мне нужна помощь с шаблонами электронной почты. У меня есть html-шаблон с тремя встроенными изображениями в нем. Я использую платный модуль проверки подлинности и пытаюсь настроить почтовую программу по умолчанию. Шаблон отлично работает как отдельная веб-страница, но по какой-то причине неправильно рисует изображения. Я могу либо получить прикрепленные изображения, но не сделать inline, или вообще не прикреплять.Шаблоны электронной почты в Ruby on Rails

Во всяком случае, почтовая программа выглядит следующим образом:

class UserMailer < ActionMailer::Base 
    def signup_notification(user) 
    setup_email(user) 
    @subject << 'Please activate your thredUP account' 
    @body[:url] = "#{APP_CONFIG[:site_url]}/activate/#{user.activation_code}" 
    end 

    def activation(user) 
    setup_email(user) 
    @subject << 'Your account has been activated - Welcome to thredUP!' 
    @url = APP_CONFIG[:site_url] 
    @user = user 
    content_type "text/html" 
    attachment :content_type => "image/gif", :body => File.read("#{Rails.root}/public/images/email/bottom-border.gif") 
    attachment :content_type => "image/gif", :body => File.read("#{Rails.root}/public/images/email/top-border.gif") 
    attachment :content_type => "image/png", :body => File.read("#{Rails.root}/public/images/email/footer.png") 
    attachment :content_type => "image/png", :body => File.read("#{Rails.root}/public/images/email/logo-lid.png") 
    render :layout => 'standard' 
    end 

    protected 
    def setup_email(user) 
     @recipients = "#{user.email}" 
     @from = APP_CONFIG[:admin_email] 
     @subject = "[#{APP_CONFIG[:site_name]}] " 
     @sent_on = Time.now 
     @body[:user] = user 
    end 
end 

Я также построил шаблон следующим образом:

<html> 
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" bgcolor='#EFEFEF' > 
<table width="100%" cellpadding="10" cellspacing="40" border="0" class="backgroundTable" bgcolor='#EFEFEF' > 
    <tr> 
     <td valign="top" align="center"> 
      <table width="600" cellpadding="0" cellspacing="0"> 
       <tr> 
        <td style="padding-bottom:15px;"><img src="cid:logo-lid.png"> </td> 
       </tr> 
      </table> 
      <table width="600" cellpadding="0" cellspacing="0"> 
       <tr> 
        <td><img src="cid:top-border.gif"></td> 
       </tr> 
       <tr bgcolor="#FFFFFF"> 
        <td style="padding:20px;"> 
         <%= yield %> 
        </td> 
       </tr> 
       <tr> 
        <td><img src="cid:bottom-border.gif"></td> 
       </tr> 
       <tr> 
        <td style="text-align:center; padding-top:15px;"> 
         <img src="cid:footer.png"> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 
</body> 
</html>      

ответ

3

есть какая-либо конкретная причина, что они должны быть прикреплены, а чем размещен на вашем сервере, а затем указывается в письме (например, <img src="http://your.server/image.png" />)?

Я бы предположил, что это упростит его.

+0

ok Я попробую это. Думаю, я помню, что в свои дни окон, чтобы утверждать загрузку изображений на стороне сервера. Я предполагаю, что это изменилось? – chrishomer

+0

Я не могу говорить для каждого клиента, но именно так большинство служб рассылок, похоже, справляются с этим, и это работает. –

+0

Многие клиенты блокируют размещенные изображения по умолчанию [по уважительным причинам], но большинство разрешают встроенные (прикрепленные) изображения. – sandstrom

0

Если вы настаиваете на их прикреплении, попробуйте использовать драгоценный камень Inline_attachment Джейсона Кинга. Работает лучше всего для статических изображений.

Ссылка: http://github.com/JasonKing/inline_attachment/tree/master

+1

ссылки сломанные, рассмотрите удаление ответа – AJcodez

Смежные вопросы