Class: SuperSendTX::DeliveryMethod

Inherits:
Object
  • Object
show all
Defined in:
lib/supersendtx/delivery_method.rb

Overview

ActionMailer delivery method: config.action_mailer.delivery_method = :supersendtx

Instance Method Summary collapse

Constructor Details

#initialize(settings = {}) ⇒ DeliveryMethod

Returns a new instance of DeliveryMethod.



9
10
11
12
# File 'lib/supersendtx/delivery_method.rb', line 9

def initialize(settings = {})
  @settings = settings || {}
  @client = @settings[:client] || build_client
end

Instance Method Details

#deliver!(mail) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/supersendtx/delivery_method.rb', line 14

def deliver!(mail)
  params = MessageMapper.to_send_params(mail)
  result = @client.emails.send(**params)
  message_id = result.is_a?(Hash) ? (result["id"] || result[:id]) : nil
  mail.message_id = message_id if message_id && mail.respond_to?(:message_id=)
  result
rescue SuperSendTX::Error => e
  # Re-raise as SuperSendTX::Error (not a bare String → RuntimeError) so
  # ActionMailer / rescue_from can read status, details, and error_code.
  raise SuperSendTX::Error.new(
    "SuperSend TX API error: #{e.message}",
    status: e.status,
    details: e.details,
    error_code: e.error_code,
    upgrade_url: e.upgrade_url
  )
end