Using Devise (>= 1.4.1) with PostageApp

Create a custom Postageapp mailer class as follows (you can also copy the default app/mailers/devise/mailer.rb file in the devise library and modify it accordingly):

  class MyDeviseMailer < PostageApp::Mailer
    include Devise::Mailers::Helpers

    def confirmation_instructions(record)
      # PostageApp specific elements (example):
      postageapp_template 'my-signup-confirmation'
      postageapp_variables :email => record.email,
                           :link  => confirmation_url(:confirmation_token => record.confirmation_token)

      devise_mail(record, :confirmation_instructions)
    end

    def reset_password_instructions(record)
      # PostageApp specific elements (example):
      postageapp_template 'my-password-reset'
      postageapp_variables :name => record.name ||= record.email,
                           :link => password_url(:reset_password_token => record.reset_password_token)

      devise_mail(record, :reset_password_instructions)
    end

    def unlock_instructions(record)
      # PostageApp specific elements (example):
      postageapp_template 'my-unlock-instructions'
      postageapp_variables :name => record.name ||= record.email,
                           :link => unlock_url(:unlock_token => record.unlock_token)
      devise_mail(record, :unlock_instructions)
    end

  protected
    # Ensures template subject is used instead of the default devise mailer subject.
    def headers_for(action)
      headers = super
      headers[:subject] = ''
      headers
    end
  end

In the /config/initializers/devise.rb file, set the custom mailer to be:

config.mailer = "MyDeviseMailer"

UPDATE

Our good friend, Mark Foster, pointed out that emails sent through Devise without subject lines specified would send out the Devise defaults. As such, he has sent us an addition to his original Devise code (which we have updated above) that sends a blank subject line to the PostageApp API, which uses the templates you have specified in your backend.

comments powered by Disqus