Bamboo.SentEmailApiPlug (bamboo v2.2.0) View Source
A plug that exposes delivered emails over a JSON API.
This is useful for an integration test runner that doesn't have
access to the Bamboo.Test helpers, but needs to be able to assert that
emails have been delivered.
You must use the Bamboo.LocalAdapter or no emails will be available.
Using with Plug or Phoenix
# Make sure you are using Bamboo.LocalAdapter in your config
config :my_app, MyApp.Mailer,
adapter: Bamboo.LocalAdapter
# In your Router
defmodule MyApp.Router do
use Phoenix.Router # or use Plug.Router if you're not using Phoenix
if Mix.env == :e2e do
# If using Phoenix
forward "/sent_emails_api", Bamboo.SentEmailApiPlug
# If using Plug.Router, make sure to add the `to`
forward "/sent_emails_api", to: Bamboo.SentEmailApiPlug
end
endAPI endpoints
There are two endpoints:
GET /emails.jsonexposes the list of sent emailsPOST /reset.jsonresets the sent emails back to an empty list
Usually, you would POST to /reset.json at the beginning of a test run,
and GET from /emails.json as you need to during an integration test to
make assertions. The details of how you make assertions is left up to your
integration test runner.
Email response JSON
Sent emails are returned in the following format:
{
"to": [[null, "to@example.com"], ["Alice", "alice@example.com"]],
"text_body": "hello world",
"subject": "This is a test email",
"html_body": "<p>hello world</p>",
"headers": {},
"from": [null, "from@example.com"],
"cc": [[null, "cc@example.com"]],
"bcc": [["Bob", "bob@example.com"]],
"attachments": []
}Email addresses are returned in array pairs, with the first element as the
name, and the second as the email address. The first element can be null
if the address didn't specify a name. The to, cc and bcc fields are
returned as arrays of these pairs.
Link to this section Summary
Link to this section Functions
Callback implementation for Plug.call/2.
Callback implementation for Plug.init/1.