2009-08-16 5 views
2

Ich brauche Hilfe bei E-Mail-Vorlagen. Ich habe eine HTML-Vorlage mit drei eingebetteten Bildern darin. Ich verwende das Restful Authentication Plugin und habe versucht den Default Mailer anzupassen. Die Vorlage funktioniert hervorragend als eigenständige Webseite, wird aber aus irgendeinem Grund nicht richtig mit den Bildern gerendert. Ich kann entweder die Bilder anhängen, aber nicht inline rendern, oder die nicht anhängen.E-Mail-Vorlagen in Ruby on Rails

Wie auch immer das Mailer ist wie folgt:

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 

Ich habe auch die Vorlage wie folgt aufgebaut:

<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>      

Antwort

3

ist es ein besonderer Grund, die sie benötigen vielmehr angebracht werden als auf Ihrem Server gehostet und dann in der E-Mail referenziert (zB <img src="http://your.server/image.png" />)?

Ich würde mir vorstellen, dass das es vereinfachen würde.

+0

ok Ich werde versuchen, dass. Ich glaube, ich erinnere mich an meine Windows-Tage, ich musste den Download von Server-Side-Images genehmigen. Ich nehme an, das hat sich geändert? – chrishomer

+0

Ich kann nicht für jeden Kunden sprechen, aber so scheinen die meisten Newsletter-Dienste damit umzugehen, und es funktioniert. –

+0

Viele Clients blockieren gehostete Bilder standardmäßig [aus guten Gründen], aber die meisten erlauben inline (angefügte) Bilder. – sandstrom