class Mailkick::Service::Mailgun
Public Class Methods
discoverable?()
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 29 def self.discoverable? !!(defined?(::Mailgun) && ENV["MAILGUN_API_KEY"]) end
new(options = {})
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 6 def initialize(options = {}) require "mailgun" mailgun_client = ::Mailgun::Client.new(options[:api_key] || ENV["MAILGUN_API_KEY"]) domain = options[:domain] || ActionMailer::Base.smtp_settings[:domain] @mailgun_events = ::Mailgun::Events.new(mailgun_client, domain) end
Public Instance Methods
bounces()
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 25 def bounces fetch(@mailgun_events.get(event: "failed"), "bounce") end
opt_outs()
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 13 def opt_outs unsubscribes + spam_reports + bounces end
spam_reports()
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 21 def spam_reports fetch(@mailgun_events.get(event: "complained"), "spam") end
unsubscribes()
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 17 def unsubscribes fetch(@mailgun_events.get(event: "unsubscribed"), "unsubscribe") end
Protected Instance Methods
fetch(response, reason)
click to toggle source
# File lib/mailkick/service/mailgun.rb, line 35 def fetch(response, reason) response.to_h["items"].map do |record| { email: record["recipient"], time: ActiveSupport::TimeZone["UTC"].at(record["timestamp"]), reason: reason } end end