Class: Courrier::Email::Providers::Ses

Inherits:
Base
  • Object
show all
Defined in:
lib/courrier/email/providers/ses.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Courrier::Email::Providers::Base

Instance Method Details

#bodyObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/courrier/email/providers/ses.rb', line 25

def body
  {
    "FromEmailAddress" => @options.from,
    "Destination" => {
      "ToAddresses" => Array(@options.to),
      "CcAddresses" => @options.cc ? Array(@options.cc) : nil,
      "BccAddresses" => @options.bcc ? Array(@options.bcc) : nil
    }.compact,

    "ReplyToAddresses" => @options.reply_to ? Array(@options.reply_to) : nil,
    "Content" => {
      "Simple" => {
        "Subject" => {"Data" => @options.subject},

        "Body" => {
          "Text" => {"Data" => @options.text},
          "Html" => {"Data" => @options.html}
        }.compact
      }
    }
  }.compact
end

#deliverObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/courrier/email/providers/ses.rb', line 7

def deliver
  uri = URI.parse("https://email.#{@provider_options[:region]}.amazonaws.com/v2/email/outbound-emails")

  request = Net::HTTP::Post.new(uri)
  default_headers.merge(@custom_headers).each { |name, value| request[name] = value }

  sign!(request)

  request.body = JSON.dump(body)

  options = {use_ssl: uri.scheme == "https"}
  response = Net::HTTP.start(uri.hostname, uri.port, options) { it.request(request) }

  Courrier::Email::Result.new(response: response)
rescue => error
  Courrier::Email::Result.new(error: error)
end