Elixir MailSlurp Library
Official Elixir library for MailSlurp. Create email accounts then send and receive email from Elixir, Erlang, Phoenix and more.
Quick links
Install
There are multiple ways to install MailSlurp.
Note: replace the version shown with the latest version on hex.pm.
Mix.exs
{:mailslurp, "~> 11.6"}
Rebar.config
{mailslurp, "11.6.0"}
Erlang.mk
dep_mailslurp = hex 11.6.0
Recommended extras
MailSlurp uses Tesla client and httpc by default. Hackney is recommended as it handles some MailSlurp POST methods with empty bodies.
defp deps do
[
{:hackney, "~> 1.17.4"},
{:mailslurp, "~> 11.6.1"}
]
end
Configure client
Get API KEY
Create a MailSlurp account to obtain a free API KEY.
Configure Tesla
The MailSlurp REST API is split into controllers. Each method accepts a Tesla client as the first parameter.
# create a tesla client for MailSlurp controllers
middleware = [
# set x-api-key header with MailSlurp API Key
{Tesla.Middleware.Headers, [{"x-api-key", "your-mailslurp-api-key-here"}]},
{Tesla.Middleware.BaseUrl, "https://api.mailslurp.com"},
{Tesla.Middleware.EncodeJson, engine: Poison}
]
# use hackney adapter instead of httpc
adapter = {Tesla.Adapter.Hackney, [recv_timeout: 30_000]}
# create a connection
connection = Tesla.client(middleware, adapter)
Use controllers
Controller method return values can be matched against :ok, T
or :error, :info
.
# handle ok result and response
{ :ok, inbox } = MailSlurpAPI.Api.InboxController.create_inbox(connection)
# handle error
{ :error, info } = MailSlurpAPI.Api.InboxController.create_inbox(connection)
Examples
Here are some common use cases. See the documentation or examples pages for more information.
Create inbox
Inboxes have an emailAddress
and id
.
# create test email address
{ :ok, inbox } = MailSlurpAPI.Api.InboxController.create_inbox(connection)
assert inbox.emailAddress =~ "@mailslurp."
Receive email
{:ok, email} = MailSlurpAPI.Api.WaitForController.wait_for_latest_email(connection, [
:inboxId = inbox.id,
:timeout = 30_000,
:unreadOnly = true
])
Send email
MailSlurpAPI.Api.InboxController.send_email(connection, inbox.id, [
to: [inbox.emailAddress],
subject: "test",
body: "Hello"
])