2012-12-04 23 views
9

Sto lavorando a un'app che è strettamente integrata con Mandrill (il servizio di posta elettronica transazionale di MailChimp) e sto cercando di scavalcare Devise Mailer ma per qualche motivo quando invio la chiamata API a Mandrill Ricevo la loro email, ma Devise mi invia anche un'email (che è vuota).Rails 3 Override Devise Mailer

Ecco il mio DeviseMailer

class MyDeviseMailer < Devise::Mailer 
    def reset_password_instructions(record) 
    mandrill = Mandrill::API.new("#{MandrillConfig.api_key}") 
    mandrill.messages 'send-template', 
      { 
       :template_name => 'Forgot Password', 
       :template_content => "", 
       :message => { 
       :subject => "Forgot Password", 
       :from_email => "[email protected]", 
       :from_name => "Company Support", 
       :to => [ 
        { 
        :email => record.email 
        } 
       ], 
       :global_merge_vars => [ 
        { 
        :name => "FIRST_NAME", 
        :content => record.first_name 
        }, 
        { 
        :name => "FORGOT_PASSWORD_URL", 
        :content => "<a href='#{edit_user_password_url(:reset_password_token => record.reset_password_token)}'>Change My Password</a>" 
        } 
       ] 
       } 
      } 
     #We need to call super because Devise doesn't think we have sent any mail 
     super 
    end 
end 

La chiamata a super ho trovato qui: http://qnundrum.com/answer.php?q=254917

+0

Ho solo pensato, ma hai provato a sovrascrivere l'opzione 'config.mailer' in ** devise.rb **? – Noz

+0

L'ho fatto, escogitare sta ancora inviando l'e-mail perché devi chiamare super in fondo al tuo override – dennismonsewicz

+0

Cosa succede se si lascia fuori la chiamata a super? – mccannf

risposta

12

stavo correndo in un problema simile.

Hai aggiornare il file di inizializzazione concepire (devise.rb) per specificare quanto segue:

config.mailer = "MyDeviseMailer" 

È inoltre bisogno di spostare qualsiasi e tutti i file nelle viste/ideare/mailer a vista/mydevisemailer.

Vorrei anche riavviare il server.