Class: Courrier::Email::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/courrier/email/provider.rb

Constant Summary collapse

PROVIDERS =
{
  inbox: Courrier::Email::Providers::Inbox,
  logger: Courrier::Email::Providers::Logger,
  loops: Courrier::Email::Providers::Loops,
  mailgun: Courrier::Email::Providers::Mailgun,
  mailjet: Courrier::Email::Providers::Mailjet,
  mailpace: Courrier::Email::Providers::Mailpace,
  postmark: Courrier::Email::Providers::Postmark,
  resend: Courrier::Email::Providers::Resend,
  sendgrid: Courrier::Email::Providers::Sendgrid,
  sparkpost: Courrier::Email::Providers::Sparkpost,
  userlist: Courrier::Email::Providers::Userlist
}

Instance Method Summary collapse

Constructor Details

#initialize(provider: nil, api_key: nil, options: {}, provider_options: {}, context_options: {}, custom_headers: {}) ⇒ Provider

Returns a new instance of Provider.



33
34
35
36
37
38
39
40
41
# File 'lib/courrier/email/provider.rb', line 33

def initialize(provider: nil, api_key: nil, options: {}, provider_options: {}, context_options: {}, custom_headers: {})
  @provider = provider
  @api_key = api_key

  @options = options
  @provider_options = provider_options
  @context_options = context_options
  @custom_headers = custom_headers
end

Instance Method Details

#deliverObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/courrier/email/provider.rb', line 43

def deliver
  raise Courrier::ConfigurationError, "Unknown provider. Choose one of `#{comma_separated_providers}` or provide your own." if provider_invalid?
  raise Courrier::ConfigurationError, "API key must be configured for #{@provider} provider in production environment" if configuration_missing_in_production?

  provider_class.new(
    api_key: @api_key,
    options: @options,
    provider_options: @provider_options,
    context_options: @context_options,
    custom_headers: @custom_headers
  ).deliver
end