Class: MailerLog::MailInterceptor

Inherits:
Object
  • Object
show all
Defined in:
lib/mailer_log/mail_interceptor.rb

Class Method Summary collapse

Class Method Details

.delivering_email(message) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mailer_log/mail_interceptor.rb', line 6

def delivering_email(message)
  tracking_id = SecureRandom.uuid

  # Add tracking header for Mailgun webhook correlation
  message.header['X-Mailer-Log-Tracking-ID'] = tracking_id

  # Store data for observer to pick up after delivery
  MailerLog::Current.email_data = {
    tracking_id: tracking_id,
    mailer_class: extract_mailer_class(message),
    mailer_action: extract_mailer_action(message),
    from_address: message.from&.first,
    to_addresses: Array(message.to),
    cc_addresses: Array(message.cc),
    bcc_addresses: Array(message.bcc),
    subject: message.subject,
    html_body: extract_html_body(message),
    text_body: extract_text_body(message),
    headers: extract_headers(message),
    call_stack: capture_call_stack,
    git_revision: capture_git_revision,
    domain: message[:domain]&.value
  }
rescue StandardError => e
  Rails.logger.error("MailerLog::MailInterceptor error: #{e.message}")
  Rails.logger.error(e.backtrace.first(5).join("\n"))
  Airbrake.notify(e) if defined?(Airbrake)
end