SwooshCloudflare

Swoosh adapter for Cloudflare Email Service.

Installation

def deps do
  [
    {:swoosh_cloudflare, "~> 0.1"}
  ]
end

Configuration

config :my_app, MyApp.Mailer,
  adapter: Swoosh.Adapters.Cloudflare,
  api_token: System.get_env("CLOUDFLARE_EMAIL_TOKEN"),
  account_id: System.get_env("CLOUDFLARE_ACCOUNT_ID")

Define your mailer module:

defmodule MyApp.Mailer do
  use Swoosh.Mailer, otp_app: :my_app
end

Usage

import Swoosh.Email

new()
|> to({"Alice", "alice@example.com"})
|> from({"My App", "noreply@yourdomain.com"})
|> subject("Welcome!")
|> html_body("<h1>Hello, Alice!</h1>")
|> MyApp.Mailer.deliver()

Limitations

Error handling

deliver/1 returns {:error, {http_status, reason}} on API errors:

Reason HTTP Cloudflare code
:invalid_request 400 10001
:invalid_content 400 10200
:message_too_large 400 10202
:sending_disabled 403 10203
:rate_limited 429 10004
:server_error 500 10002
:unknown_error any

License

MIT