2009-08-16 9 views
2

J'ai besoin d'aide pour les modèles de courrier électronique. J'ai un modèle html avec trois images incorporées dedans. J'utilise le plugin d'authentification reposful et j'ai essayé de personnaliser le mailer par défaut. Le modèle fonctionne très bien en tant que page Web autonome, mais pour une raison quelconque, il ne fonctionne pas correctement avec les images. Je peux soit obtenir les images à attacher mais pas rendre en ligne, ou ne pas attacher du tout.Modèles de courrier électronique dans Ruby on Rails

Quoi qu'il en soit le logiciel de messagerie se présente comme suit:

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 

J'ai aussi construit le modèle comme suit:

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

Répondre

3

est-il une raison particulière qu'ils doivent être joints plutôt que hébergé sur votre serveur, puis référencé dans l'e-mail (par exemple <img src="http://your.server/image.png" />)?

J'imagine que cela le simplifierait.

+0

ok Je vais essayer ça. Je pense que je me souviens de mes jours Windows, d'avoir à approuver le téléchargement des images côté serveur. Je suppose que cela a changé? – chrishomer

+0

Je ne peux pas parler pour tous les clients, mais c'est comme cela que la plupart des services de newsletter semblent le gérer, et cela fonctionne. –

+0

De nombreux clients bloquent les images hébergées par défaut [pour de bonnes raisons], mais la plupart autorisent les images en ligne (attachées). – sandstrom