Sha256: 724cd6a66c4e3d626e0df74ccbcdcacae80a7377d0ca7162cdc0bc49b7e9e7f3

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

require 'rubygems'
gem 'actionmailer', '~> 2.0' 
require 'action_mailer'
require 'cerberus/publisher/base'

if RUBY_VERSION =~ /1\.8\.\d/
  # This hack works only on 1.8.x
  require 'cerberus/publisher/netsmtp_tls_fix'
end

class Cerberus::Publisher::Mail < Cerberus::Publisher::Base
  def self.publish(state, manager, options)
    mail_opts = options[:publisher, :mail].dup
    raise "There is no recipients provided for mail publisher" unless mail_opts[:recipients]

    configure(mail_opts)
    ActionMailerPublisher.deliver_message(state, manager, options)
  end

  private
  def self.configure(config)
    [:authentication, :delivery_method].each do |k|
      config[k] = config[k].to_sym if config[k]
    end

    ActionMailer::Base.delivery_method = config[:delivery_method] if config[:delivery_method]
    ActionMailer::Base.smtp_settings = config
  end

  class ActionMailerPublisher < ActionMailer::Base
    def message(state, manager, options)
      @subject, @body = Cerberus::Publisher::Base.formatted_message(state, manager, options)
      @recipients, @sent_on = options[:publisher, :mail, :recipients], Time.now
      @from = options[:publisher, :mail, :sender] || 'cerberus@example.com' 
      raise "Please specify recipient addresses for application '#{options[:application_name]}'" unless @recipients
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
edavis10-cerberus-0.7.8 lib/cerberus/publisher/mail.rb
cerberus-0.7.8 lib/cerberus/publisher/mail.rb
cerberus-0.7.7 lib/cerberus/publisher/mail.rb