Sha256: 590bf7730f788f66d856b23fb61faa0faf31146c2bb86a2b2fdf8c533d00e123

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

require 'tms_client'
require 'mail'
require 'mail/check_delivery_params'
module TMS
  module Mail
    # Use TMS from the mail gem or ActionMailer as a delivery method.
    #
    #   # Gemfile
    #   gem 'tms_client', :require=>'tms_client/mail/delivery_method'
    #
    #   # config/environment.rb
    #   config.action_mailer.delivery_method = :govdelivery_tms
    #   config.action_mailer.govdelivery_tms_settings = {
    #     :username=>'email@foo.com',
    #     :password=>'pass',
    #     :api_root=>'https://stage-tms.govdelivery.com'
    #     }
    class DeliveryMethod
      include ::Mail::CheckDeliveryParams

      def initialize(values)
        self.settings = values
      end

      attr_accessor :settings

      def deliver!(mail)
        #check_params(mail)
        raise TMS::Errors::NoRelation.new('email_messages', client) unless client.respond_to?(:email_messages)

        envelope_from = mail.return_path || mail.sender || mail.from_addrs.first

        tms_message = client.email_messages.build(
          :from_name => mail[:from].display_names.first,
          :subject => mail.subject,
          :body => (mail.body || mail.html_part.body || mail.text_part.body).to_s
        )

        mail.to.each { |recip| tms_message.recipients.build(:email => recip) }
        tms_message.post!
        tms_message
      end

      def client
        @client ||= TMS::Client.new(settings[:username], settings[:password], settings)
      end
    end
  end
end

if defined?(ActionMailer)
  ActionMailer::Base.add_delivery_method :govdelivery_tms, TMS::Mail::DeliveryMethod, {
    :username => nil,
    :password => nil,
    :logger => ActionMailer::Base.logger,
    :api_root => TMS::Client::DEFAULTS[:api_root]}
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tms_client-0.1.1 lib/tms_client/mail/delivery_method.rb