SMTP instellen met Python
Wesender ondersteunt SMTP via STARTTLS op poort 587. Hieronder vind je voorbeelden voor puur Python (smtplib), Django en Flask.
Vereisten
- Een Wesender-account met een geverifieerd domein
- Python 3.8 of hoger
- Je API-key uit het dashboard (Instellingen → API-sleutels)
SMTP-verbindingsgegevens
| Instelling | Waarde |
|---|---|
| Host | smtp.wesender.nl |
| Poort | 587 |
| Beveiliging | STARTTLS |
| Gebruikersnaam | je API-key |
| Wachtwoord | je API-key |
Puur Python (smtplib)
Geen extra installatie nodig — smtplib is onderdeel van de standaardbibliotheek:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os
WESENDER_API_KEY = os.environ["WESENDER_API_KEY"]
def stuur_email(naar: str, onderwerp: str, html: str, tekst: str = ""):
bericht = MIMEMultipart("alternative")
bericht["Subject"] = onderwerp
bericht["From"] = "noreply@mijndomein.nl"
bericht["To"] = naar
if tekst:
bericht.attach(MIMEText(tekst, "plain"))
bericht.attach(MIMEText(html, "html"))
with smtplib.SMTP("smtp.wesender.nl", 587) as server:
server.ehlo()
server.starttls()
server.login(WESENDER_API_KEY, WESENDER_API_KEY)
server.sendmail("noreply@mijndomein.nl", naar, bericht.as_string())
# Gebruik
stuur_email(
naar="klant@voorbeeld.nl",
onderwerp="Welkom!",
html="<h1>Welkom!</h1><p>Bedankt voor je aanmelding.</p>",
tekst="Welkom! Bedankt voor je aanmelding.",
)
Django
Stap 1: settings.py aanpassen
import os
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.wesender.nl"
EMAIL_PORT = 587
EMAIL_USE_TLS = True # STARTTLS
EMAIL_HOST_USER = os.environ.get("WESENDER_API_KEY")
EMAIL_HOST_PASSWORD = os.environ.get("WESENDER_API_KEY")
DEFAULT_FROM_EMAIL = "noreply@mijndomein.nl"
Stap 2: E-mail versturen
from django.core.mail import send_mail, EmailMultiAlternatives
# Eenvoudige tekst-e-mail
send_mail(
subject="Welkom bij ons platform",
message="Bedankt voor je aanmelding.",
from_email="noreply@mijndomein.nl",
recipient_list=["klant@voorbeeld.nl"],
)
# HTML-e-mail
email = EmailMultiAlternatives(
subject="Je bestelling is bevestigd",
body="Je bestelling #1234 is bevestigd.",
from_email="noreply@mijndomein.nl",
to=["klant@voorbeeld.nl"],
)
email.attach_alternative(
"<h1>Bestelling bevestigd</h1><p>Ordernummer: #1234</p>",
"text/html"
)
email.send()
Lokaal testen: Gebruik
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"om e-mails naar de terminal te sturen zonder echte verzending.
Flask (flask-mail)
Stap 1: Installeren
pip install flask-mail
Stap 2: Configureren
from flask import Flask
from flask_mail import Mail, Message
import os
app = Flask(__name__)
app.config.update(
MAIL_SERVER = "smtp.wesender.nl",
MAIL_PORT = 587,
MAIL_USE_TLS = True,
MAIL_USERNAME = os.environ["WESENDER_API_KEY"],
MAIL_PASSWORD = os.environ["WESENDER_API_KEY"],
)
mall = Mail(app)
Stap 3: E-mail versturen
msg = Message(
subject="Welkom!",
sender="noreply@mijndomein.nl",
recipients=["klant@voorbeeld.nl"],
html="<h1>Welkom!</h1>"
)
mall.send(msg)
Foutoplossing
- SMTPAuthenticationError — gebruik je API-key als gebruikersnaam én wachtwoord, niet je e-mailadres of dashboard-wachtwoord
- SSLError — gebruik
EMAIL_USE_TLS = True(STARTTLS op poort 587), nietEMAIL_USE_SSL = True(SSL op poort 465) - TimeoutError — poort 587 is geblokkeerd; controleer je firewall of server-instellingen
- SMTPRecipientsRefused — het verzenddomein is niet geverifieerd in je Wesender-dashboard