Python
Gebruik de officiële wesender Python-package voor directe integratie
zonder externe dependencies — de SDK gebruikt alleen de standaardbibliotheek.
Werkt met Python 3.8+.
github.com/nljerry/wesender-python
Installatie
pip install wesender Initialisatie
import os
from wesender import Wesender
ws = Wesender(api_key=os.environ["WS_API_KEY"]) E-mail versturen
result = ws.send_email(
from_="noreply@joudomein.nl",
to="klant@voorbeeld.nl",
subject="Welkom!",
html="<p>Bedankt voor je registratie.</p>",
)
print(result["id"], result["status"]) # em_01hw... queued Meerdere ontvangers
ws.send_email(
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
import base64
with open("factuur.pdf", "rb") as f:
pdf_b64 = base64.b64encode(f.read()).decode()
ws.send_email(
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_b64,
"content_type": "application/pdf",
}],
) Batch versturen
results = ws.send_batch([
{"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>"},
])
for r in results:
print(r["id"], r["status"]) Domeinen beheren
# Alle domeinen
domeinen = ws.list_domains()
# Domein toevoegen
domein = ws.create_domain("joudomein.nl")
print(domein["dns_records"]) # SPF, DKIM, DMARC
# DNS verifiëren
resultaat = ws.verify_domain(domein["id"])
print(resultaat["spf_ok"], resultaat["dkim_ok"]) API-sleutels beheren
# Nieuwe sleutel aanmaken
sleutel = ws.create_api_key("Productie-server")
print(sleutel["token"]) # ws_live_... (sla op!)
# Alle sleutels
sleutels = ws.list_api_keys()
# Sleutel verwijderen
ws.delete_api_key(sleutel["id"]) Foutafhandeling
from wesender import Wesender, WesenderError
try:
ws.send_email(from_="...", to="...", subject="...", html="...")
except WesenderError as e:
print(e.message, e.status_code)
# bijv. "Domain not verified", 422 Django-integratie
from wesender import Wesender
from django.conf import settings
_ws = Wesender(api_key=settings.WESENDER_API_KEY)
def stuur_welkomstmail(naam: str, email: str) -> dict:
return _ws.send_email(
from_=settings.DEFAULT_FROM_EMAIL,
to=email,
subject=f"Welkom, {naam}!",
html=f"<h1>Hoi {naam}!</h1><p>Bedankt voor je aanmelding.</p>",
) FastAPI-integratie
from fastapi import APIRouter, BackgroundTasks
from wesender import Wesender
import os
router = APIRouter()
ws = Wesender(os.environ["WS_API_KEY"])
@router.post("/registreer")
async def registreer(naam: str, email: str, bg: BackgroundTasks):
bg.add_task(ws.send_email,
from_="noreply@joudomein.nl",
to=email,
subject=f"Welkom, {naam}!",
html=f"<p>Hoi {naam}!</p>",
)
return {"ok": True} Zonder SDK (requests)
import os, requests
requests.post(
"https://api.wesender.nl/emails",
headers={"Authorization": f"Bearer {os.environ['WS_API_KEY']}"},
json={
"from": "noreply@joudomein.nl",
"to": "klant@voorbeeld.nl",
"subject": "Hallo!",
"html": "<p>Via requests.</p>",
},
).raise_for_status()