View Source Swoosh.Adapters.AmazonSES (Swoosh v1.16.4)

An adapter that sends email using the Amazon Simple Email Service (SES) Query API. This adapter does not depend on ExAws; if you are already using it, you may prefer Swoosh.Adapters.ExAwsAmazonSES.

This email adapter makes use of the Amazon SES SendRawEmail action and generates a SMTP style message containing the information to be emailed. This allows for greater more customizable email message and ensures the capability to add attachments. As a result, however, the :gen_smtp dependency is required in order to correctly generate the SMTP message that will be sent.

Ensure sure you have the dependency added in your mix.exs file:

def deps do
  [
    {:swoosh, "~> 1.0"},
    {:gen_smtp, "~> 1.0"}
  ]
end

This adapter requires an API Client. Swoosh comes with Hackney, Finch and Req out of the box. See the installation section for details.

See also:

Amazon SES Query Api Docs

Amazon SES SendRawEmail Documentation

Configuration options

Required

Note that these are handled automatically if using Swoosh.Adapters.ExAwsAmazonSES.

  • :region - the AWS region
  • :access_key - the IAM access key
  • :secret - the IAM secret

Optional

  • :ses_source - An email address used for bounce reports. Will be set as the Source request parameter in the SES API. Note that this must correspond to a verified identity.

Examples

# config/config.exs
config :sample, Sample.Mailer,
  adapter: Swoosh.Adapters.AmazonSES,
  region: "region-endpoint",
  access_key: "aws-access-key",
  secret: "aws-secret-key"

# lib/sample/mailer.ex
defmodule Sample.Mailer do
  use Swoosh.Mailer, otp_app: :sample
end

Using with tags and configuration set

import Swoosh.Email

new()
|> from("guybrush.threepwood@pirates.grog")
|> to("elaine.marley@triisland.gov")
|> subject("Mighty Pirate Newsletter")
|> text_body("Hello")
|> put_provider_option(:tags, [%{name: "name1", value: "test1"}])
|> put_provider_option(:configuration_set_name, "configuration_set_name1")

Provider Options

  • :tags (list[map]) - a list of key/value pairs of a tag
  • :configuration_set_name (string) - the name of the configuration set
  • :security_token (string) - temporary security token obtained through AWS Security Token Service (AWS STS)

IAM role

In case you use IAM role for authenticating AWS requests, you can fetch temporary :access_key and :secret_key from that role, but you also need to include additional X-Amz-Security-Token header to that request.

You can do that by adding :security_token to :provider_options.

If you don't have a static :access_key and :secret_key for your application, you can use the Swoosh.Adapters.ExAwsAmazonSES adapter to fetch credentials on-demand as specified in your application's :ex_aws configuration.

Summary

Functions

Link to this function

deliver(email, config \\ [])

View Source

Callback implementation for Swoosh.Adapter.deliver/2.

Callback implementation for Swoosh.Adapter.validate_config/1.

Callback implementation for Swoosh.Adapter.validate_dependency/0.