2012-12-04 31 views
9

Tôi đang làm việc trên một ứng dụng được tích hợp chặt chẽ với Mandrill (dịch vụ email giao dịch của MailChimp) và tôi đang cố ghi đè Dever Mailer nhưng vì lý do nào đó khi tôi gửi lệnh gọi API tới Mandrill Tôi nhận được email của họ, nhưng Devise cũng gửi cho tôi một email (để trống).Rails 3 Overriding Devise Mailer

Đây là tôi 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 

Các cuộc gọi đến super tôi tìm thấy ở đây: http://qnundrum.com/answer.php?q=254917

+0

Tôi nghĩ, nhưng bạn đã cố ghi đè tùy chọn 'config.mailer' trong ** devise.rb ** chưa? – Noz

+0

Tôi đã làm, nghĩ ra vẫn đang gửi email vì bạn phải gọi siêu ở cuối ghi đè của bạn – dennismonsewicz

+0

Điều gì sẽ xảy ra nếu bạn rời khỏi cuộc gọi đến siêu? – mccannf

Trả lời

12

tôi đã chạy vào một vấn đề tương tự.

Bạn có cập nhật các tập tin devise initializer (devise.rb) để xác định như sau:

config.mailer = "MyDeviseMailer" 

Bạn cũng cần thiết để di chuyển bất kỳ và tất cả các file trong views/đưa ra/bưu phẩm đến views/mydevisemailer.

Tôi cũng sẽ khởi động lại máy chủ của bạn.

Các vấn đề liên quan