Elixir
De officiële wesender Hex-package biedt een complete client voor de Wesender API.
Vereist Elixir 1.14+ en Erlang/OTP 25+.
github.com/wesender/wesender-elixir
Installatie
Voeg toe aan mix.exs:
defp deps do
[
{:wesender, "~> 1.0"}
]
end Initialisatie
ws = Wesender.new(System.fetch_env!("WS_API_KEY")) E-mail versturen
{:ok, result} = Wesender.send_email(ws, %{
from: "noreply@joudomein.nl",
to: "klant@voorbeeld.nl",
subject: "Welkom!",
html: "<p>Bedankt voor je registratie.</p>"
})
IO.puts result["id"] # em_01hw...
IO.puts result["status"] # queued Meerdere ontvangers
Wesender.send_email(ws, %{
from: "nieuwsbrief@joudomein.nl",
to: ["a@voorbeeld.nl", "b@voorbeeld.nl"],
cc: ["manager@bedrijf.nl"],
subject: "Maandelijks rapport",
html: "<p>Zie bijgevoegde informatie.</p>"
}) Bijlagen
pdf = File.read!("factuur.pdf") |> Base64.encode()
Wesender.send_email(ws, %{
from: "facturen@joudomein.nl",
to: "klant@voorbeeld.nl",
subject: "Factuur 2026-0142",
html: "<p>Bijgevoegd vind je jouw factuur.</p>",
attachments: [%{
filename: "factuur-2026-0142.pdf",
content: pdf,
content_type: "application/pdf"
}]
}) Batch versturen
{:ok, results} = Wesender.send_batch(ws, [
%{from: "nl@bedrijf.nl", to: "a@voorbeeld.nl", subject: "Hoi A", html: "<p>A</p>"},
%{from: "nl@bedrijf.nl", to: "b@voorbeeld.nl", subject: "Hoi B", html: "<p>B</p>"},
])
Enum.each(results, fn r -> IO.puts("#{r["id"]} #{r["status"]}") end) Domeinen beheren
# Alle domeinen
{:ok, domeinen} = Wesender.list_domains(ws)
# Domein toevoegen
{:ok, domein} = Wesender.create_domain(ws, "joudomein.nl")
IO.inspect domein["dns_records"] # SPF, DKIM, DMARC
# DNS verifiëren
{:ok, resultaat} = Wesender.verify_domain(ws, domein["id"])
IO.puts "#{resultaat["spf_ok"]} #{resultaat["dkim_ok"]}" API-sleutels beheren
# Nieuwe sleutel aanmaken
{:ok, sleutel} = Wesender.create_api_key(ws, "Productie-server")
IO.puts sleutel["token"] # ws_live_... (sla op!)
# Alle sleutels
{:ok, sleutels} = Wesender.list_api_keys(ws)
# Sleutel verwijderen
{:ok, _} = Wesender.delete_api_key(ws, sleutel["id"]) Foutafhandeling
case Wesender.send_email(ws, %{from: "...", to: "...", subject: "...", html: "..."}) do
{:ok, result} -> IO.puts "Verstuurd: #{result["id"]}"
{:error, reason} -> IO.puts "Fout: #{inspect(reason)}"
# bijv. Fout: %{status: 422, message: "Domain not verified"}
end Phoenix integratie
defmodule MijnApp.Mailer do
@ws Wesender.new(System.fetch_env!("WS_API_KEY"))
def stuur_welkomstmail(naam, email) do
Wesender.send_email(@ws, %{
from: "noreply@joudomein.nl",
to: email,
subject: "Welkom, #{naam}!",
html: "<h1>Hoi #{naam}!</h1><p>Bedankt voor je aanmelding.</p>"
})
end
end Zonder SDK (Req)
# mix.exs: {:req, "~> 0.5"}
Req.post!("https://api.wesender.nl/emails",
auth: {:bearer, System.fetch_env!("WS_API_KEY")},
json: %{
from: "noreply@joudomein.nl",
to: "klant@voorbeeld.nl",
subject: "Hallo!",
html: "<p>Via Req.</p>"
}
)