Op deze paginaHoe WordPress standaard e-mail verstuurt
Een WordPress-site verstuurt meer e-mail dan de eigenaar denkt. De melding van het contactformulier. Het opnieuw instellen van een wachtwoord. Het welkomstbericht voor een nieuwe gebruiker, de melding voor reactiemoderatie en, bij een webshop, elke orderbevestiging, factuur en verzendupdate van WooCommerce. De meeste van deze e-mails zijn door niemand ontworpen en niemand controleert ze, totdat een klant laat weten dat de e-mail over de bestelling nooit is aangekomen.
Wanneer een van deze berichten in de spam terechtkomt, kijk dan eerst hoe het bericht de server verlaat voordat je de tekst aanpast. WordPress gebruikt hiervoor standaard de optie met de slechtste afleverbaarheid.
Hoe WordPress standaard e-mail verstuurt
WordPress zelf en vrijwel elke plugin die e-mail verstuurt, waaronder WooCommerce en formulierplugins, gebruiken één functie: wp_mail(). Deze geeft het bericht door aan PHPMailer, dat het standaard doorstuurt naar PHP's mail(). Die functie geeft het vervolgens door aan het mailprogramma op de hostingserver. Er wordt niet ingelogd bij een e-mailprovider, het bericht wordt niet ondertekend en niets in je DNS geeft aan dat deze server namens jouw domein mag verzenden.
Als afzenderadres kiest WordPress wordpress@, gevolgd door het domein van je site. WordPress verwijdert daarbij een voorlooptekst www.. Als je dit nooit hebt gewijzigd, zien je klanten dit in de From-regel. Op veel sites heeft niemand die mailbox ooit aangemaakt.
Bij shared hosting wordt het bericht vervolgens verstuurd vanaf de server van de hostingprovider, via een IP-adres dat door veel andere sites wordt gedeeld. Als een van die sites berichten naar een gekochte lijst verstuurt, of wordt gehackt en spam begint te versturen, krijgt het IP-adres een slechte reputatie. Je e-mails voor het opnieuw instellen van wachtwoorden worden vanaf hetzelfde adres verstuurd als hun berichten.
Een standaardinstallatie van WordPress verstuurt dus e-mail waarvan SPF niet overeenkomt met je domein. Het bounce-adres blijft meestal op de eigen servernaam van de hostingprovider staan. Als jouw adres daar toch terechtkomt, mislukt SPF volledig. Er is ook geen DKIM-handtekening voor je domein, waardoor DMARC mislukt. Gmail en Yahoo hebben hun regels voor afzenders in februari 2024 ingevoerd. Microsoft deed in mei 2025 hetzelfde voor domeinen die dagelijks meer dan 5.000 berichten naar Outlook.com versturen. Sinds november 2025 weigert Gmail meer e-mail die niet aan zijn regels voldoet, in plaats van deze in de spammap te plaatsen.
Verstuur via een echte e-maildienst
De belangrijkste oplossing is stoppen met het gebruik van mail(). Installeer een SMTP-plugin (WP Mail SMTP, FluentSMTP en Post SMTP worden veel gebruikt en hebben allemaal een gratis versie) en koppel deze aan een dienst die e-mail correct verstuurt: je eigen mailboxprovider, zoals Google Workspace of Microsoft 365, of een transactionele e-maildienst zoals Amazon SES, Brevo, SendGrid of Mailgun.
De plugin vervangt het transport onder wp_mail(), zodat alle e-mail van elke plugin via de nieuwe route wordt verstuurd zonder dat je de plugins zelf hoeft aan te passen. Gebruik waar mogelijk de API-optie van de provider in plaats van gewone SMTP met een wachtwoord. WP Mail SMTP geeft aan dat de API-route zelfs werkt wanneer je hostingprovider SMTP-poorten blokkeert.
Veel mensen slaan het volgende deel over. Verifieer het domein bij die provider. Elke provider geeft je DNS-records die je moet publiceren, meestal twee of drie CNAME-records voor DKIM en een SPF-include of een aangepast return-path-domein. Zolang die records niet in je DNS staan, zet de provider zijn eigen naam in de ondertekening en mislukt DMARC daar net zoals eerder op de host.
Het From-adres in contactformulieren
Formulierplugins, waaronder Contact Form 7 en WPForms, laten je bepalen wat er in de From-regel staat van de melding die je ontvangt. In veel configuraties staat daar het adres van de bezoeker, zodat je de bezoeker antwoordt wanneer je op Reply klikt. Dat lijkt slim, maar dit is precies wat DMARC moet voorkomen.
Stel dat een bezoeker genaamd Anna schrijft vanaf anna@yahoo.com. Je site verstuurt dan via een server die Yahoo nooit heeft geautoriseerd een bericht dat beweert afkomstig te zijn van yahoo.com. yahoo.com publiceert een DMARC-beleid met p=reject, waardoor een ontvangende server die dit beleid volgt de melding als vervalst weigert. Bij een bezoeker met Gmail is het beleid minder streng en belandt het bericht vaker in spam. WPForms waarschuwt hier specifiek voor in de documentatie.From ben jij, Reply-To is de bezoeker
Stel het in plaats daarvan zo in:
- From: een adres op je eigen domein, zoals
forms@yourdomain.com, hetzelfde domein waarvoor je SMTP-plugin is geverifieerd. - Reply-To: het adres van de bezoeker uit het formulierveld. Als je op Reply klikt, antwoord je nog steeds Anna.
- To: de mailbox die je daadwerkelijk leest.
In Contact Form 7 vind je dit op het tabblad Mail: vul bij From je eigen adres in en voeg onder Additional headers Reply-To: [your-email] toe. De andere formulierplugins hebben in hun instellingen voor meldingen een veld voor Reply-To.
WooCommerce-e-mails
WooCommerce heeft eigen afzenderinstellingen: WooCommerce, vervolgens Settings, daarna Emails, in het gedeelte Email Sender Options, met een "From"-naam en een "From"-adres. Standaard is dit adres het beheerdersadres van de site. Als degene die de webshop heeft geïnstalleerd daarvoor een Gmail-adres heeft gebruikt, wordt elke orderbevestiging verzonden alsof die van gmail.com afkomstig is en mislukt DMARC om dezelfde reden als bij het contactformulier hierboven. Vul daar een adres van je geauthenticeerde domein in. De naam van de webshop is een goede afzendernaam. (Bij ordermeldingen die naar jou worden verzonden, zet WooCommerce de klant al in Reply-To. Dat is de juiste instelling.)
Bij e-mails van webshops kunnen twee dingen misgaan die bij een contactformulier niet spelen.
Het eerste is het volume. Als een uitverkoopactie of nieuwsbriefplugin e-mails naar klanten verstuurt via dezelfde route als orderbevestigingen, delen marketing- en transactionele e-mails één reputatie. Als er klachten over de nieuwsbrief binnenkomen, hebben de ontvangstbewijzen daar ook last van. Door beide via verschillende diensten te verzenden, houd je ze gescheiden. Een apart subdomein voor marketing helpt enigszins, hoewel ontvangers de reputatie van het hoofddomein nog steeds laten meewegen.
Het tweede is de afmeldmogelijkheid. Orderbevestigingen en wachtwoordresets zijn transactionele e-mails. De regel van Gmail en Yahoo voor afmelden met één klik is daarop niet van toepassing. Een verzoek om een beoordeling, een herinnering aan een verlaten winkelwagen of een "dit vind je misschien ook leuk"-mail aan eerdere kopers is marketing. Als je deze in grote aantallen verstuurt, is de regel volledig van toepassing. Dat betekent dat een List-Unsubscribe-header met een optie voor afmelden met één klik vereist is. Controleer of de add-on die deze e-mails verstuurt die header toevoegt. De test hieronder laat dit in beide gevallen zien.
De DNS-kant, eenvoudig uitgelegd
Welke dienst je ook gebruikt om te verzenden, je domein heeft drie dingen in DNS nodig om de e-mail te kunnen vertrouwen. Een volledige uitleg vind je in SPF, DKIM en DMARC uitgelegd. Hieronder staat wat dit voor een WordPress-site betekent.
- SPF. Eén TXT-record op je domein waarin staat wie namens het domein mag verzenden. Voor veel verzenddiensten hoef je hier niets te wijzigen, omdat ze uitlijnen via hun eigen bouncedomein. Als jouw dienst wel om een
include:vraagt en het domein al een record voor je mailboxprovider heeft, voeg je dit aan dat record toe. Maak geen tweede record. Twee SPF-records zijn een fout en zorgen ervoor dat beide niet meer werken. Controleer het resultaat met de SPF-checker. - DKIM. De records die je verzenddienst je heeft gegeven. Zodra ze actief zijn, ondertekent de dienst elk bericht met je domein. Dit is de handtekening waarnaar DMARC zoekt.
- DMARC. Een TXT-record op
_dmarc.yourdomain.com. Begin metv=DMARC1; p=none; rua=mailto:en een adres dat je leest. Stel daarna een strenger beleid in wanneer uit de rapporten blijkt dat geen van je eigen berichten faalt. De DMARC-checker leest je huidige instellingen uit.
Houd er rekening mee dat de hostingserver mogelijk nog steeds zelf iets verzendt, bijvoorbeeld een cronjob of een oude plug-in die rechtstreeks mail() aanroept in plaats van wp_mail(). Deze berichten omzeilen de SMTP-plug-in en verschijnen in de DMARC-rapporten als een bron die je niet verwachtte.
De echte e-mails testen, niet een testbericht
Elke SMTP-plugin heeft een knop "send test email", maar die bewijst alleen dat de verbinding werkt. Je ziet daarmee niet de orderbevestiging zoals WooCommerce die opbouwt, de formuliermelding met de bijbehorende Reply-To of de e-mail voor het opnieuw instellen van het wachtwoord met de link die WordPress erin zet.
Daarom laat ik WordPress de echte berichten versturen. Een testadres van de homepage accepteert één bericht, dus haal een nieuw adres op voor elke e-mail die je wilt controleren. Stel voor het formulier het adres even in als ontvanger van de melding en verstuur het formulier. Plaats voor WooCommerce een testbestelling met het adres als e-mailadres van de klant. Geef voor het opnieuw instellen van het wachtwoord een testgebruiker het adres en vraag een reset aan. Elk bericht krijgt een eigen rapport met SPF, DKIM en DMARC en de bijbehorende afstemming, 21 blokkeerlijsten, inhoud en links, en de regels voor bulkverzenders. Voor de map waarin het bericht bij Gmail, Outlook, Yahoo en andere providers terechtkomt, moet hetzelfde bericht naar een lijst met inboxen worden gestuurd, met een markering in het onderwerp. Een formulier of winkelbestelling kan dat niet, dus test dit onderdeel alleen voor e-mails die je zelf verstuurt.
Als je liever niet handmatig testbestellingen plaatst, verstuurt de gratis WordPress-plugin deze berichten via de eigen wp_mail() van je site. Dat is dezelfde route die de e-mail van je klanten volgt. De plugin toont het resultaat in het dashboard. Ook merkt de plugin het op wanneer de site een soort e-mail begint te versturen die nog niet eerder is gezien.
Als je e-mail nog steeds in de spam terechtkomt
Als de authenticatie slaagt, het From-adres op jouw domein staat en de e-mail nog steeds in de spam terechtkomt, controleer dan de reputatie van de infrastructuur waarlangs je de e-mail verstuurt. Een gedeeld hosting-IP op een blokkeerlijst is een veelvoorkomende oorzaak als je nog mail() gebruikt. De blokkeerlijstcontrole laat dit zien. De inhoud speelt een kleinere rol dan mensen verwachten. Een formuliermelding met één link en drie regels tekst activeert op zichzelf zelden een filter. Een WooCommerce-e-mail met een zware HTML-template, één grote afbeelding en een linkverkorter kan dat wel doen.
Controleer één bericht, los de problemen uit het rapport op en stuur het opnieuw naar een nieuw adres.