SDK's

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
gem install wesender
Gemfile
gem 'wesender'

Initialisatie

client.rb
require 'wesender'

ws = Wesender::Client.new(ENV['WS_API_KEY'])

E-mail versturen

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

Array van 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

PDF meesturen
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

Domeinen
# 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

API-sleutels
# 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

Wesender::Error
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

app/services/email_service.rb
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)

Directe 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']