Sha256: cf577a450891ef4783879bf067d59a6c95ae08220868cf96e7cc341974f44286

Contents?: true

Size: 1.63 KB

Versions: 8

Compression:

Stored size: 1.63 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 = {
    #     :auth_token=>'auth_token',
    #     :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[:auth_token], settings)
      end
    end
  end
end

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
tms_client-0.5.2 lib/tms_client/mail/delivery_method.rb
tms_client-0.5.1 lib/tms_client/mail/delivery_method.rb
tms_client-0.4.1 lib/tms_client/mail/delivery_method.rb
tms_client-0.4.0 lib/tms_client/mail/delivery_method.rb
tms_client-0.3.0 lib/tms_client/mail/delivery_method.rb
tms_client-0.2.2 lib/tms_client/mail/delivery_method.rb
tms_client-0.2.1 lib/tms_client/mail/delivery_method.rb
tms_client-0.2.0 lib/tms_client/mail/delivery_method.rb