Ruby
De officiële wesender Ruby gem heeft geen externe dependencies
en gebruikt alleen de standaardbibliotheek (net/http, json).
Werkt met Ruby 2.7+.
github.com/nljerry/wesender-ruby
Installatie
gem install wesender gem 'wesender' Initialisatie
require 'wesender'
ws = Wesender::Client.new(ENV['WS_API_KEY']) E-mail versturen
result = ws.emails.send(
from: 'noreply@joudomein.nl',
to: 'klant@voorbeeld.nl',
subject: 'Welkom!',
html: '<p>Bedankt voor je registratie.</p>'
)
puts result[:id] # em_01hw...
puts result[:status] # queued Meerdere ontvangers
ws.emails.send(
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
require 'base64'
pdf = Base64.strict_encode64(File.read('factuur.pdf', mode: 'rb'))
ws.emails.send(
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'
}]
) Domeinen beheren
# Alle domeinen
domeinen = ws.domains.list
# Domein toevoegen
domein = ws.domains.create('joudomein.nl')
puts domein[:dns_records].inspect # SPF, DKIM, DMARC API-sleutels beheren
# Nieuwe sleutel aanmaken
sleutel = ws.api_keys.create('Productie-server')
puts sleutel[:token] # ws_live_... (sla op!)
# Alle sleutels
sleutels = ws.api_keys.list
# Sleutel verwijderen
ws.api_keys.delete(sleutel[:id]) Foutafhandeling
begin
ws.emails.send(from: '...', to: '...', subject: '...', html: '...')
rescue Wesender::Error => e
puts e.message # Domain not verified
puts e.status # 422
end Rails-integratie
class EmailService
def initialize
@ws = Wesender::Client.new(Rails.application.credentials.wesender_api_key)
end
def stuur_welkomstmail(naam:, email:)
@ws.emails.send(
from: Rails.application.credentials.dig(:mail, :from),
to: email,
subject: "Welkom, #{naam}!",
html: ApplicationController.render(
template: 'mailers/welkomst',
assigns: { naam: naam }
)
)
end
end Zonder SDK (net/http)
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.wesender.nl/emails')
http = Net::HTTP.new(uri.host, uri.port).tap { |h| h.use_ssl = true }
req = Net::HTTP::Post.new(uri)
req['Authorization'] = "Bearer #{ENV['WS_API_KEY']}"
req['Content-Type'] = 'application/json'
req.body = JSON.dump(
from: 'noreply@joudomein.nl', to: 'klant@voorbeeld.nl',
subject: 'Hallo!', html: '<p>Via net/http.</p>'
)
res = http.request(req)
puts JSON.parse(res.body)['id']