Inleiding
Met een simpele commandoregeltool kun je rechtstreeks e‑mail versturen via een SMTP‑server. Curl, bekend van HTTP‑requests, ondersteunt ook het SMTP‑protocol. Dit maakt snelle tests en geautomatiseerde meldingen mogelijk zonder extra libraries.
Waarom curl voor SMTP?
- Geen extra installatie: curl zit vaak al op Linux‑ en macOS‑systemen.
- Uniforme syntax: dezelfde tool voor web‑ en mail‑verkeer.
- Scripting: makkelijk te integreren in Bash‑scripts of CI‑pipelines.
Basisopdracht
Een minimale curl‑call ziet er zo uit:
curl smtp://mail.example.com -u gebruiker:wachtwoord -T mail.txt
smtp://mail.example.com– adres van de SMTP‑server.-u gebruiker:wachtwoord– basis‑authenticatie.-T mail.txt– bestand met volledige e‑mail (headers + body).
Opbouw van het e‑mailbestand
Het bestand moet een geldige RFC‑822‑structuur hebben:
From: afzender@example.com
To: ontvanger@example.com
Subject: Testmail via curl
Dit is de tekst van de e‑mail.
Zorg voor een lege regel tussen de header‑sectie en de bericht‑body.
Veilige verbinding (TLS/STARTTLS)
Voor versleutelde verzending gebruik je smtps:// of smtp:// met --mail-rcpt en --starttls:
curl smtps://mail.example.com:465 -u gebruiker:wachtwoord -T mail.txt
of
curl smtp://mail.example.com:587 --mail-rcpt ontvanger@example.com \
--mail-from afzender@example.com \
--starttls smtp -u gebruiker:wachtwoord -T mail.txt
- Port 465 = directe TLS.
- Port 587 = STARTTLS (upgrade na clear‑text connectie).
Meerdere ontvangers
Gebruik meerdere --mail-rcpt opties:
curl smtp://mail.example.com -u gebruiker:wachtwoord \
--mail-rcpt eerste@voorbeeld.com \
--mail-rcpt tweede@voorbeeld.com \
-T mail.txt
Curl voegt de juiste RCPT TO‑regels toe.
Bijlagen toevoegen
Curl kan multipart‑berichten genereren met --upload-file en --form:
curl -v --url smtps://mail.example.com:465 \
--mail-from afzender@example.com \
--mail-rcpt ontvanger@example.com \
-u gebruiker:wachtwoord \
-F "=mail.txt;type=text/plain" \
-F "attachment=@/pad/naar/bestand.pdf;type=application/pdf"
Hiermee wordt een MIME‑multipart bericht met een PDF‑bijlage verstuurd.
Veelvoorkomende valkuilen
- Ontbrekende lege regel tussen headers en body leidt tot foutieve parsing.
- Authenticatie‑methode: sommige servers eisen
LOGINofPLAIN; curl kiest automatisch, maar kan met--authaangepast worden. - TLS‑certificaat: bij zelf‑ondertekende certificaten moet
-k(insecure) of--cacertgebruikt worden.
Praktisch scriptvoorbeeld
#!/bin/bash
SMTP="smtp://mail.example.com:587"
USER="gebruiker"
PASS="wachtwoord"
FROM="afzender@example.com"
TO="ontvanger@example.com"
SUBJECT="Automatische melding"
BODY="Dit is een automatisch gegenereerde e‑mail."
# Maak tijdelijk mailbestand
TMP=$(mktemp)
echo "From: $FROM" > $TMP
echo "To: $TO" >> $TMP
echo "Subject: $SUBJECT" >> $TMP
echo >> $TMP
echo "$BODY" >> $TMP
curl "$SMTP" --starttls smtp \
-u "$USER:$PASS" \
--mail-from "$FROM" \
--mail-rcpt "$TO" \
-T "$TMP"
rm "$TMP"
Dit script kan in cron worden gezet voor periodieke meldingen.
Conclusie
Curl biedt een lichte, krachtige manier om e‑mails via SMTP te versturen. Met TLS, meerdere ontvangers en bijlagen kun je vrijwel elke eenvoudige mail‑use‑case afhandelen zonder extra software. Perfect voor hack‑tastics, monitoring en snelle tests.