Sha256: f347e1defec32ef780fc36e7470aaabbdba5b6d1617c1c05282542c197ab9335

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'mandrill'

module MandrillAPIDeliveryMethod
  class DeliveryMethod
    class InvalidOption < StandardError; end
  
    attr_accessor :settings
  
    def initialize(options = {})
      raise InvalidOption, "An API key is required when using the Mandrill API delivery method" if options[:api_key].nil?
      self.settings = options
    end
  
    def deliver!(mail)
      begin
        mandrill = Mandrill::API.new self.settings[:api_key]
        
        message = {
          subject: mail.subject,
          from_email: mail.from.first,
          to: [{
            email: mail.to.first
          }]
        }
        
        if not mail.text_part.nil?
          message[:text] = mail.text_part.body.to_s
        end
        
        if not mail.html_part.nil?
          message[:html] = mail.html_part.body.to_s
        end
      
        async = false
        send_at = mail.deliver_at.nil? ? Time.now.utc.to_s : mail.deliver_at.uts.to_s
      
        result = mandrill.messages.send message, async, nil, send_at
      rescue Mandrill::Error => e
        puts "Error delivering mail to Mandrill API: #{e.class} - #{e.message}"
        raise
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mandrill-api-delivery-method-0.1 lib/mandrill_api_delivery_method/delivery_method.rb