Tutorial

E-mail versturen met Python

Vanuit Python verstuur je transactionele e-mail via de officiële wesender-package. In deze tutorial doorloop je installatie, je eerste verzending en nette foutafhandeling.

Wat je nodig hebt

  • Een Wesender-account en een API-key
  • Een geverifieerd verzenddomein (zie de DNS-gids)
  • Python 3.8+
Node.js Python
1
Stap 1

SDK installeren

De officiële package gebruikt alleen de Python standaardbibliotheek, geen extra dependencies:

terminal
pip install wesender
2
Stap 2

Client aanmaken

client.py
import os
from wesender import Wesender

ws = Wesender(api_key=os.environ["WS_API_KEY"])
3
Stap 3

Je eerste e-mail versturen

send.py
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
Bewaar je API-key als omgevingsvariabele. Lokaal via .env met python-dotenv; in productie via je hosting-secrets.
4
Stap 4

Foutafhandeling

gebruik
try:
    result = ws.send_email(
        from_="noreply@joudomein.nl",
        to="klant@voorbeeld.nl",
        subject="Welkom!",
        html="<p>Bedankt voor je registratie.</p>",
    )
except Exception as err:
    print("Versturen mislukt:", err)
    # log de fout en beslis of je het later opnieuw probeert
5
Stap 5

Bijlagen toevoegen

Voeg bestanden toe via de attachments-parameter als lijst van dictionaries. Codeer de inhoud als base64:

factuur.py
import base64

with open("factuur.pdf", "rb") as f:
    pdf_b64 = base64.b64encode(f.read()).decode()

result = ws.send_email(
    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_b64,
            "content_type": "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

Gebruik je al de standaardbibliotheek smtplib, dan werkt dit direct met de Wesender SMTP-relay:

smtp_voorbeeld.py
import smtplib, os
from email.mime.text import MIMEText

msg = MIMEText("<p>Test via SMTP.</p>", "html")
msg["Subject"] = "Test"
msg["From"]    = "noreply@joudomein.nl"
msg["To"]      = "klant@voorbeeld.nl"

with smtplib.SMTP("smtp.wesender.nl", 587) as smtp:
    smtp.starttls()
    smtp.login(os.environ["WS_API_KEY"], os.environ["WS_API_KEY"])
    smtp.send_message(msg)
De REST-API geeft rijkere foutinformatie per bericht en minder overhead. Kies SMTP als je bestaande integratie dat vereist.
Veelgestelde vragen

Vragen

Kan ik dit ook met de standaardbibliotheek, zonder requests?
Ja, elke HTTP-client werkt. De wesender-package gebruikt alleen de standaardbibliotheek, dus die heeft geen extra dependencies.
Moet ik via SMTP of via de API?
De API geeft de meeste controle en feedback per bericht. Heb je bestaande SMTP-code, dan kan dat ook via de Wesender SMTP-relay.
Hoe voorkom ik dat mijn API-key in mijn code terechtkomt?
Gebruik een omgevingsvariabele (WS_API_KEY) en laad hem lokaal via python-dotenv. Zet hem nooit in je broncode of in versiebeheer.
Kan ik naar meerdere ontvangers versturen?
Ja. Geef een lijst mee aan de 'to'-parameter: to=['a@voorbeeld.nl', 'b@voorbeeld.nl']. Je kunt ook 'cc' en 'bcc' als losse lijsten meegeven.
Hoe test ik zonder echte e-mails te versturen?
Gebruik een testdomein of een mailcatcher zoals Mailpit of Mailtrap tijdens ontwikkeling. In productie kun je het Wesender-logboek raadplegen om te zien of berichten aankomen.