De symptomen variëren maar het onderliggende probleem is vaak hetzelfde:
- "Contactformulier werkt niet" — terwijl 'ie wel zegt "verzonden"
- "WooCommerce bevestigingsmail komt niet aan"
- "Order-update mail mist" — klanten bellen met "is mijn bestelling wel binnen?"
- "Wachtwoord-reset werkt niet" — admin sluit zichzelf buiten
- "Mails komen wel aan maar in de spam-folder"
- "Werkte vroeger wel, sinds een paar weken niet meer"
- "Sommige ontvangers krijgen wel mail, anderen niet" (Outlook/Hotmail/Microsoft is vaak strenger dan Gmail)
De fundamentele oorzaak: PHP mail() is een schoorsteen, geen postbode
WordPress gebruikt standaard de PHP-functie mail() om e-mail te versturen. Onder de motorkap roept dat het lokale mail-systeem op de hostingserver aan (sendmail, postfix, exim) en die probeert de mail af te leveren bij de ontvanger. In 2026 werkt dat fundamenteel slecht om vier redenen:
- Hosters blokkeren
mail()steeds vaker om misbruik (spam) te voorkomen — sommige Nederlandse hosters hebben 't volledig uitgezet - Geen authenticatie:
mail()verstuurt zonder bewijs dat de hostingserver toestemming heeft om vanuit jouw domein te versturen. Gmail/Outlook accepteren dat steeds minder - IP-reputatie: shared hosting deelt het uitgaande IP met honderden andere websites. Eén spammer en het hele IP staat op blacklists — ook jouw mail komt niet aan
- Geen feedback: als de mail wordt geweigerd, krijg je geen melding terug. WordPress denkt dat 't gelukt is, jij denkt dat 't gelukt is, maar de mail is gewoon weggegooid
De duurzame oplossing is in alle gevallen hetzelfde: laat WordPress niet zelf mail versturen, maar via een SMTP-relay van een gespecialiseerde mailprovider.
Stap 1: bevestig dat het écht een mail-probleem is
Voor je iets installeert, sluit andere oorzaken uit:
Test of wp_mail faalt of slaagt
Installeer plug-in "Check & Log Email" of "WP Mail Logging". Stuur een test-mail. Plugin laat zien:
- Heeft WordPress de mail aan PHP overgedragen? (Yes/No)
- Welke afzender, welke ontvanger, welke subject?
- Zijn er fouten gerapporteerd?
Drie scenario's:
- "Failed" in log → WordPress kreeg al fouten van PHP. Vaak:
mail()uitgeschakeld door hoster, of plugin/contactformulier-config fout - "Sent" in log, maar mail komt niet aan → de mail is wel verstuurd maar wordt onderweg geweigerd of in spam beland (deliverability-probleem)
- Geen entry in log → WordPress probeerde überhaupt geen mail te sturen. Plugin-config issue (Contact Form 7 integratie fout, WooCommerce notificatie uitgezet)
Check de spam-folder van de ontvanger
Triviaal maar relevant. Vooral op nieuwe domeinen of na een wijziging van afzender belandt mail eerst in spam tot reputatie opbouwt. Check zowel je hoofdinbox als spam, ook bij gmail het "Promotions"-tabblad.
Check de WP_DEBUG_LOG
Zet aan in wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Stuur test-mail, kijk in wp-content/debug.log. Vaak staat daar de echte foutmelding (PHP mail() uitgeschakeld, fatal in plugin-hook, etc.).
Stap 2: installeer een SMTP-plugin
De juiste oplossing is altijd: laat WordPress mail versturen via SMTP, niet via mail(). Plugin opties:
- WP Mail SMTP (door WPForms) — meest populair, ondersteunt vrijwel elke service. Gratis voor basisgebruik, betaald voor extra features
- Fluent SMTP — gratis, snel, breed aanbod aan integraties
- Post SMTP — gratis met goede logging
- Easy WP SMTP — eenvoudige configuratie
Mijn voorkeur: Fluent SMTP of WP Mail SMTP. Allebei goed onderhouden en gratis voor wat de meeste sites nodig hebben.
Stap 3: kies je SMTP-provider
De plugin doet zelf geen mail-aflevering — die geeft de mail door aan een SMTP-server. Welke provider?
Eigen hosting-SMTP (gratis, vaak prima)
De makkelijkste keuze: gebruik de mail-server die bij je hosting hoort. Hostnet, TransIP, Vimexx, Antagonist, Mijndomein etc. — vrijwel allemaal bieden ze een SMTP-server zoals smtp.jouwdomein.nl of mail.hoster.nl. Je gebruikt een bestaand mailbox (info@jouwdomein.nl) als verzendaccount.
Voor: gratis, eenvoudig, mail komt vanaf jouw domein. Tegen: bij grote volumes (mailings) kunnen hosters limieten opleggen, en deliverability is afhankelijk van hosting-IP-reputatie.
Brevo (vroeger SendinBlue)
Gratis tot 300 mails/dag. Betrouwbare deliverability, vooral richting Outlook/Hotmail. Goede keuze voor MKB-sites die enkele tientallen contactformulieren of order-mails per dag verzenden.
Mailgun
Volwassen platform, gratis startersplan (bij credit card op je account: 100 mails/dag). Betrouwbaar voor zowel transactionele mail als grote campagnes. Iets technischer dan Brevo om in te stellen.
SendGrid
Door Twilio overgenomen. Gratis 100 mails/dag. Sterke deliverability en goede analytics. Hoge volume-prijzen aanvaardbaar.
Amazon SES
Goedkoopst voor hoge volumes ($0,10 per 1000 mails). Initieel "sandbox-mode" — moet je vrijschakelen via aanvraag. Voor MKB overdreven; voor SaaS of e-commerce schaal interessant.
Microsoft 365 / Google Workspace
Als je dat al gebruikt voor je dagelijkse mail, kun je dezelfde account gebruiken voor SMTP. Werkt prima voor lage volumes. Pas op met M365: limiet is 10.000 mails/dag/account.
Postmark / Mailtrap (alleen voor staging)
Mailtrap "vangt" mails op zonder ze daadwerkelijk te verzenden — ideaal voor staging-testen zonder per ongeluk klanten te mailen.
Stap 4: configureer SMTP — voorbeeldscenario
Hier het meest voorkomende scenario: hostingmail van Hostnet (vergelijkbaar bij andere NL-hosters):
- In hosting paneel: maak een mailbox aan, bijvoorbeeld
noreply@jouwdomein.nl - Noteer SMTP-instellingen van je hoster:
- SMTP-host: bijv.
smtp.hostnet.nl - Poort:
587(STARTTLS) of465(SSL/TLS) - Authenticatie: ja, met mailbox-username/wachtwoord
- SMTP-host: bijv.
- In WordPress: WP Mail SMTP plugin → Settings → vul in:
- From Email:
noreply@jouwdomein.nl - From Name: bedrijfsnaam
- Mailer: "Other SMTP"
- SMTP Host:
smtp.hostnet.nl(of jouw hoster) - Encryption: TLS (port 587) of SSL (port 465)
- Authentication: Yes
- Username:
noreply@jouwdomein.nl - Password: het mailbox-wachtwoord
- From Email:
- Save → Test Email tab → verstuur testmail
Komt-ie aan? Configuratie werkt. Niet aangekomen? Check spam-folder, daarna door naar deliverability-stap.
Stap 5: SPF, DKIM, DMARC instellen — anders blijft mail spam
Je SMTP-config kan technisch goed staan, maar zonder DNS-authenticatie weigeren grote ontvangers (Gmail, Outlook, Yahoo) je mail steeds vaker. Sinds februari 2024 vereist Gmail SPF én DKIM voor afzenders die meer dan 5000 mails/dag versturen, en wordt die eis breder uitgerold.
Volledige uitleg met DNS-voorbeelden: SPF, DKIM en DMARC instellen voor jouw domein. Hier kort:
- SPF: TXT-record dat zegt welke servers vanaf jouw domein mogen versturen. Bijvoorbeeld:
v=spf1 include:_spf.hostnet.nl include:_spf.brevo.com ~all - DKIM: digitale handtekening op elke mail. Provider geeft je een TXT-record om in DNS te zetten
- DMARC: policy die zegt wat ontvangers met niet-gevalideerde mail moeten doen. Begin met
p=none(alleen rapporten), pas later strenger
Alle drie de records zet je in DNS-beheer van jouw domein. Bij Hostnet, TransIP en de meeste NL-registrars is dat een paar klikken in het paneel.
Stap 6: test je mail-deliverability
Nadat alles is ingericht: stuur een testmail en check actief of 't goed afkomt. Tools:
- Mail-Tester.com: stuur een mail naar het tijdelijke adres, krijg een score uit 10. Geeft per onderdeel (SPF, DKIM, DMARC, content) wat goed/fout is
- MXToolbox: check je SPF en DKIM-records, plus blacklist-status
- Test naar verschillende providers: Gmail, Outlook, een Microsoft 365-account, Yahoo. Outlook is vaak het strengst — als 't daar binnenkomt zit je goed
Streef naar mail-tester score 10/10. Onder 8 is meestal nog werk.
Specifieke probleem-scenario's
Contact Form 7 stuurt niets
Mail-instellingen in CF7 staan vaak op From: [your-email] — dat zet de afzender op het mailadres dat de bezoeker invulde. Gmail en Outlook weigeren dat (DMARC-violatie: jij verstuurt vanaf gmail.com terwijl je niet bent gmail.com).
Fix: From altijd op jouw eigen domein zetten, bezoeker-email in Reply-To:
From: noreply@jouwdomein.nl
Reply-To: [your-email]
WooCommerce-bevestiging mist
WooCommerce mailt vanaf het adres dat in WooCommerce → Settings → Emails staat (vaak admin-email). Zelfde regel: dat moet een adres op jouw domein zijn. Check ook of de specifieke email-types (New Order, Customer Invoice, etc.) actief staan.
Wachtwoord-reset komt niet aan
WordPress' eigen mailflow gebruikt wp_mail() — werkt dus alleen als SMTP werkt. Test via "Wachtwoord vergeten" link op login-scherm. Komt 'ie niet, dan is je SMTP-setup nog niet helemaal goed.
Mail komt aan, maar belandt steeds in spam
Deliverability-probleem, niet verzending. Check:
- SPF, DKIM, DMARC alle drie ingesteld?
- From-domein matcht met DKIM-domein?
- Geen "spammy" content (alle hoofdletters, "GRATIS!!!", veel exclamation marks)
- Je verzendend IP niet op blacklist (check via MXToolbox)
- Reverse DNS van je verzend-IP klopt
Mail werkt soms wel soms niet
Vrijwel altijd: hosting-IP heeft wisselende reputatie, of je raakt rate-limits. Switch naar een dedicated SMTP-provider (Brevo, Mailgun) — die hebben stabiele IP-reputatie omdat ze full-time deliverability beheren.
WP_DEBUG_LOG toont "Could not instantiate mail function"
Hoster heeft PHP mail() uitgeschakeld. Dit is niet op te lossen zonder SMTP-plugin — je moet via SMTP versturen.
Specifieke tips per provider
Brevo (SendinBlue)
- Account aanmaken op brevo.com
- SMTP-keys onder Settings → SMTP & API
- Plugin: kies "Brevo" of "Other SMTP" met
smtp-relay.brevo.comport 587 - Domein verifiëren in Brevo dashboard (DKIM-record toevoegen aan DNS)
Mailgun
- Account, voeg domein toe
- Mailgun geeft je SPF, DKIM, MX records om aan DNS toe te voegen
- Plugin: kies "Mailgun" — vul API-key en domein in
- Wacht tot Mailgun je domein als "verified" markeert (DNS propagatie kan tot 24u duren)
Eigen hosting (Hostnet, TransIP, etc.)
- Mailbox in hosting paneel aanmaken
- SMTP-instellingen vanaf hoster-pagina kopiëren
- SPF in DNS aanvullen met hoster's
include: - DKIM via hosting paneel activeren (vrijwel elke NL-hoster ondersteunt dat tegenwoordig)
Long-term: monitor je mailflow
- Logging-plugin actief houden: Check & Log Email of WP Mail Logging. Bij klacht "ik heb geen mail gehad" kun je terugkijken wat er is gebeurd
- Maandelijks test mailen naar Mail-Tester en houd score in de gaten — als 't ineens daalt, weet je dat er iets is gewijzigd
- Brevo/Mailgun-dashboards: bounces en spam-rapporten bekijken — bij plotselinge piek weet je dat er iets is
- DMARC-rapporten: de DMARC-policy genereert wekelijkse rapporten naar het adres dat je opgeeft. Toont welke IPs vanaf jouw domein versturen — onverwachte IPs zijn een rode vlag
Wanneer schakel je hulp in?
- Plugin geïnstalleerd, SMTP ingevuld, testmail werkt — maar bezoekers zeggen nog steeds dat ze niets ontvangen
- Mail komt aan op Gmail maar niet op Outlook, of andersom — vraagt om gerichte deliverability-tuning
- Je hebt een grote mailing-volume (mailingen, abonnementen) en moet kiezen tussen providers met betere bulk-deliverability
- SPF/DKIM/DMARC instellen lukt niet door DNS-paneel-beperkingen of complexe situaties (subdomains, third-party tools)
- Site verstuurt onbedoeld te veel mail (bots die formulier misbruiken) en hoster dreigt account te schorsen
- WooCommerce-shop met live klanten — orders die geen bevestiging krijgen kosten omzet en vertrouwen, dit moet binnen het uur weg
- Je krijgt zelf "Mail delivery failed" bounces en weet niet of die naar verzonden of ontvangen mails verwijzen
WordPress mail die niet aankomt is in 90% van de gevallen op te lossen met: SMTP-plugin + externe (of hosting-) SMTP-server + correct ingestelde SPF/DKIM/DMARC. Als één van die drie ontbreekt, krijg je problemen — vaak pas weken later, als gebruikers gewend zijn dat 't werkt en nu niets meer ontvangen. Doe 't één keer goed, monitor maandelijks, en je houdt geen ruis in deze keten.