Class: MailerLog::WebhooksController

Inherits:
ActionController::Base
  • Object
show all
Defined in:
app/controllers/mailer_log/webhooks_controller.rb

Instance Method Summary collapse

Instance Method Details

#mailgun ⇒ Object

POST /mailer_log/webhooks/mailgun



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/controllers/mailer_log/webhooks_controller.rb', line 11

def mailgun
  event_data = (params['event-data'] || params).to_unsafe_h.with_indifferent_access

  email = find_email(event_data)
  unless email
    Rails.logger.info("MailerLog: Email not found for webhook event")
    return head :ok
  end

  normalized_event = normalize_event_type(event_data['event'])
  create_event(email, event_data, normalized_event)
  email.update_status_from_event!(normalized_event)

  head :ok
rescue StandardError => e
  Rails.logger.error("MailerLog webhook error: #{e.message}")
  Rails.logger.error(e.backtrace.first(5).join("\n"))
  report_error(e)
  head :ok # Return 200 to prevent Mailgun retries for processing errors
end