Tutorial
E-mail versturen met Node.js
Met de Node-SDK van Wesender verstuur je transactionele e-mail in een paar regels. In deze tutorial doorloop je installatie, je eerste verzending, een herbruikbare functie en nette foutafhandeling.
Wat je nodig hebt
- Een Wesender-account en een API-key
- Een geverifieerd verzenddomein (zie de DNS-gids)
- Node.js geïnstalleerd
Node.js Python
1
Stap 1
SDK installeren
terminal
npm install @wesender/node 2
Stap 2
Je eerste e-mail versturen
send.ts
import { Wesender } from "@wesender/node"
const ws = new Wesender(process.env.WS_API_KEY!)
const result = await ws.emails.send({
from: "noreply@joudomein.nl",
to: "klant@voorbeeld.nl",
subject: "Welkom",
html: "<p>Bedankt voor je registratie.</p>",
})
console.log(result) // { id: "em_01hw...", status: "queued" } Bewaar je API-key in
WS_API_KEY als omgevingsvariabele. Zet hem nooit in je broncode of in versiebeheer. 3
Stap 3
Een herbruikbare functie
In de praktijk maak je per berichttype een aparte functie, zodat je de opmaak en het type op één plek beheert:
email/welkomst.ts
import { Wesender } from "@wesender/node"
const ws = new Wesender(process.env.WS_API_KEY!)
export async function welkomstmail(naam: string, to: string) {
return ws.emails.send({
from: "noreply@joudomein.nl",
to,
subject: `Welkom, ${naam}!`,
html: `<p>Hoi ${naam}, leuk dat je er bent.</p>`,
})
} 4
Stap 4
Foutafhandeling
Vang fouten af zodat een mislukte verzending je flow niet breekt:
gebruik
try {
await welkomstmail("Sam", "sam@voorbeeld.nl")
} catch (err) {
console.error("Versturen mislukt:", err)
// log de fout en beslis of je het later opnieuw probeert
} 5
Stap 5
Bijlagen toevoegen
Gebruik de attachments-array om bestanden mee te sturen. De inhoud lever je als base64-string of als Buffer:
email/factuur.ts
import { readFileSync } from "fs"
const pdf = readFileSync("./factuur.pdf")
await ws.emails.send({
from: "facturatie@joudomein.nl",
to: "klant@voorbeeld.nl",
subject: "Jouw factuur",
html: "<p>Bijgesloten vind je jouw factuur.</p>",
attachments: [
{
filename: "factuur.pdf",
content: pdf.toString("base64"),
contentType: "application/pdf",
},
],
}) Houd bijlagen zo klein mogelijk. Voor grote bestanden kun je beter een downloadlink in de e-mail opnemen.
6
Stap 6
SMTP als alternatief
Werk je al met Nodemailer en wil je de codebase niet wijzigen? Wijs Nodemailer naar de Wesender SMTP-relay:
mailer.ts
import nodemailer from "nodemailer"
const transporter = nodemailer.createTransport({
host: "smtp.wesender.nl",
port: 587,
secure: false,
auth: {
user: process.env.WS_API_KEY, // api-key als gebruikersnaam
pass: process.env.WS_API_KEY, // api-key ook als wachtwoord
},
})
await transporter.sendMail({
from: "noreply@joudomein.nl",
to: "klant@voorbeeld.nl",
subject: "Test via SMTP",
html: "<p>Verstuurd via Wesender SMTP.</p>",
}) De REST-API geeft rijkere foutinformatie per bericht en minder overhead. Kies SMTP als je bestaande integratie dat vereist.
Veelgestelde vragen
Vragen
Heb ik Nodemailer nodig?
Nee. Met de SDK doe je een directe API-aanroep en heb je volledige controle. Wil je toch via SMTP, dan kun je Nodemailer naar de Wesender SMTP-relay wijzen.
Waar bewaar ik mijn API-key?
In een omgevingsvariabele zoals WS_API_KEY, nooit in je broncode of in versiebeheer. Gebruik .env lokaal en je hosting-secrets in productie.
Werkt dit ook met CommonJS (require)?
Ja. Importeer met const { Wesender } = require('@wesender/node') en de rest van de code blijft gelijk.
Kan ik naar meerdere ontvangers versturen?
Ja. Geef een array mee aan het 'to'-veld: to: ['a@voorbeeld.nl', 'b@voorbeeld.nl']. Je kunt ook 'cc' en 'bcc' als losse velden toevoegen.
Wat betekent status 'queued' in de respons?
Dat betekent dat Wesender het bericht heeft ontvangen en in de wachtrij staat voor verzending. Gebruik webhooks om op de hoogte te blijven wanneer het bericht daadwerkelijk is afgeleverd, geopend of gebounced.
Volgende stappen
Verder bouwen
Klaar om te beginnen?
3.000 e-mails per maand gratis. Data in Europese datacenters.