← Terug naar kennisbank E-MAIL

Microsoft 365 e-mail koppelen aan WordPress — compleet stappenplan

Je gebruikt Microsoft 365 (voorheen Office 365) voor je zakelijke e-mail en wilt dat WordPress hetzelfde adres gebruikt om bestellingen, contactformulier-meldingen en notificaties te versturen. De koppeling is sinds 2022 lastiger geworden — Microsoft heeft Basic Auth voor SMTP grotendeels uitgeschakeld. Deze gids loopt de moderne OAuth-koppeling stap voor stap door, plus alternatieven als je tenant geen app-registraties toelaat.

Waarom dit anders ligt dan andere e-mailservices

Bij een gewone hoster (TransIP, Antagonist, Hostnet) installeer je een SMTP-plugin, vult host/poort/gebruiker/wachtwoord in, klaar. Bij Microsoft 365 is het in 2026 een ander verhaal:

  • Basic Auth voor SMTP is sinds januari 2023 niet meer standaard beschikbaar in nieuwe tenants. Bestaande tenants die het hadden, zijn in fasen ook overgezet.
  • Multifactor-authenticatie is steeds vaker verplicht — een gewoon wachtwoord werkt niet meer als gebruikers MFA aan hebben.
  • Modern Authentication (OAuth 2.0) is nu het standaard mechanisme — vergt een app-registratie in Entra ID (voorheen Azure AD).
  • Conditional Access policies in zakelijke tenants kunnen extra eisen stellen aan SMTP-verbindingen.

Concreet: als je in 2026 een M365-mailbox koppelt aan WordPress, heb je in 80% van de gevallen Microsoft Graph API met OAuth nodig. Hieronder eerst de drie methoden, dan de praktische stappen voor de meest gebruikte: WP Mail SMTP met Microsoft Graph.

Drie methoden — kies de juiste voor jouw situatie

Methode 1: WP Mail SMTP met Microsoft Graph (aanbevolen)

Modern, OAuth-gebaseerd, geen wachtwoord in WordPress nodig. Vereist eenmalige app-registratie in Entra ID en admin-toestemming. Werkt voor 90% van de tenants.

Wanneer kiezen: standaard zakelijke M365-tenant met admin-toegang, gemiddeld volume (< 10.000 e-mails/dag).

Methode 2: SMTP Auth met App Password (legacy)

Werkt alleen als je tenant Basic Auth voor SMTP nog toelaat (oude tenants of expliciet opnieuw aangezet) én de gebruiker heeft een app-password ingesteld.

Wanneer kiezen: oudere tenants waar Basic Auth nog werkt en je wilt snel iets opzetten zonder app-registratie. Niet toekomstbestendig.

Methode 3: SMTP Relay via Connector (high-volume)

Voor sites die honderden tot duizenden e-mails per dag versturen. M365 staat directe SMTP-relay toe vanaf vaste IP-adressen via een Inbound Connector. Je server-IP wordt expliciet vertrouwd.

Wanneer kiezen: hoge volumes, vast server-IP, transactionele e-mail. Vereist Exchange-admin met connector-rechten.

De rest van dit artikel behandelt methode 1 (Microsoft Graph) als hoofdpad, met methode 2 en 3 in kortere vorm.

Voorbereiding — wat je nodig hebt

  • Microsoft 365-account met admin-rechten op de tenant (Global Admin of App Administrator). Heb je dat niet, vraag het aan je IT-beheerder.
  • WordPress-admin-toegang tot de site waarvoor je het koppelt.
  • WP Mail SMTP plugin — gratis versie werkt voor de meeste use cases. De Pro-versie biedt Microsoft 365 als één van de officiële mailers maar de gratis versie ondersteunt het ook.
  • Een mailbox of shared mailbox waarvan e-mails verstuurd mogen worden.

Stap 1 — App registreren in Entra ID

Open entra.microsoft.com en log in als admin. Navigeer naar Identity → Applications → App registrations.

  1. Klik op + New registration
  2. Naam: bijvoorbeeld WordPress Mailer - jouwsite.nl
  3. Supported account types: Accounts in this organizational directory only (Single tenant)
  4. Redirect URI: laat leeg of kies "Web" met https://jouwsite.nl/wp-admin/ (alleen relevant voor user-flow OAuth, niet voor server-flow)
  5. Klik Register

Je komt op de overview-pagina. Noteer drie waarden — die heb je straks nodig:

Application (client) ID:    abc12345-...-...-...
Directory (tenant) ID:      xyz98765-...-...-...
Object ID:                  (niet nodig voor SMTP)

Stap 2 — API-permissies toevoegen

In je nieuwe app-registratie, links in het menu klik API permissions.

  1. Klik + Add a permission
  2. Kies Microsoft Graph
  3. Kies Application permissions (NIET delegated — server-side)
  4. Zoek en vink aan: Mail.Send
  5. Klik Add permissions
  6. Klik op Grant admin consent for [tenant naam] bovenaan en bevestig

Status moet daarna "Granted for [tenant]" tonen met een groen vinkje. Geen consent = geen e-mail.

Optioneel: beperken tot één mailbox (sterk aanbevolen)

Met Mail.Send kan deze app vanuit ELKE mailbox in de tenant versturen — gevaarlijk als de client secret lekt. Beperk dit:

  1. Open een PowerShell als admin met Exchange-rechten
  2. Maak een Application Access Policy aan die de app beperkt tot één specifieke mailbox:
New-ApplicationAccessPolicy `
    -AppId "abc12345-...-...-..." `
    -PolicyScopeGroupId "noreply@jouwdomein.nl" `
    -AccessRight RestrictAccess `
    -Description "Restrict WordPress mailer to noreply mailbox only"

Vanaf nu kan deze app alleen vanuit noreply@jouwdomein.nl versturen. Mocht het secret ooit lekken, is de schade beperkt.

Stap 3 — Client Secret aanmaken

Terug in je app-registratie, links: Certificates & secrets.

  1. Tab Client secrets+ New client secret
  2. Description: bijvoorbeeld "WordPress mailer secret"
  3. Expires: kies bewust — 24 maanden is praktisch, korter is veiliger maar vereist eerder verlengen
  4. Klik Add

Belangrijk: de Value van het secret is alleen NU zichtbaar, daarna wordt hij verborgen. Kopieer hem direct naar je wachtwoord-manager. Mis je dit moment, dan moet je een nieuw secret aanmaken.

Stap 4 — WP Mail SMTP installeren en configureren

In WordPress: Plugins → Nieuwe plugin → "WP Mail SMTP" zoeken → Installeren → Activeren.

Ga naar WP Mail SMTP → Settings:

  1. From Email: het mailadres dat als afzender wordt getoond, bv. noreply@jouwdomein.nl. Moet exact overeenkomen met de mailbox waarvoor de app autorisatie heeft.
  2. From Name: bv. "Jouwsite Notificaties"
  3. Vink aan: Force From Email en Force From Name (anders overschrijven plugins als WooCommerce de waarden)
  4. Bij Mailer: kies Microsoft 365 / Outlook (in gratis versie heet het soms gewoon "Outlook")

Vul daarna de drie waarden in die je hebt genoteerd:

Application (Client) ID:  <de waarde uit stap 1>
Application Client Secret: <de Value uit stap 3, NIET de Secret ID>
Tenant ID:                 <Directory ID uit stap 1>

Klik Save Settings.

Stap 5 — Test sturen

WP Mail SMTP heeft een Email Test-tab. Vul daar je eigen e-mailadres in en klik Send Email.

  • "Email sent successfully" + e-mail aangekomen → klaar.
  • Foutmelding → ga naar de troubleshooting-sectie hieronder.

Doe daarna ook een echte WordPress-test: vraag een wachtwoord-reset aan vanaf je login-pagina. Dat triggert wp_mail() via de normale flow en bewijst dat de koppeling alle WordPress-e-mails dekt.

Methode 2 — SMTP Auth met App Password (legacy)

Werkt alleen als je tenant nog Basic Auth voor SMTP toelaat. Test dit eerst door te kijken bij Microsoft 365 admin → Settings → Org settings → Modern Authentication → SMTP AUTH. Staat daar "Authenticated SMTP" aan, dan mag het.

App-wachtwoord aanmaken (gebruiker met MFA)

Login op mysignins.microsoft.com/security-info met de mailbox-account. Klik + Add sign-in method → App password. Geef het een naam (bv. "WordPress mailer"), kopieer het 16-teken wachtwoord.

WP Mail SMTP configuratie

Bij Mailer kies Other SMTP. Vul in:

SMTP Host:        smtp.office365.com
Encryption:       TLS
SMTP Port:        587
Auto TLS:         Aan
Authentication:   Aan
SMTP Username:    noreply@jouwdomein.nl
SMTP Password:    <het 16-teken app-password>

Save → Email Test draaien.

Let op: Microsoft kan op elk moment besluiten om Basic Auth volledig uit te schakelen (waarschuwing meestal 6 maanden vooraf). Beschouw dit als tijdelijke oplossing.

Methode 3 — SMTP Relay via Inbound Connector (high-volume)

Niet voor de gemiddelde site, maar als je honderden mails per uur verstuurt (transactionele systemen, nieuwsbrieven via WP) — dan is dit de schaalbare optie.

Hoe het werkt

Je server (vast IP) verbindt direct naar jouwdomein-nl.mail.protection.outlook.com op port 25 zonder authenticatie. M365 vertrouwt verbindingen vanaf jouw IP via een Inbound Connector. SPF moet jouw server-IP toestaan.

Setup-overzicht

  1. Exchange admin centerMail flow → Connectors+ Add a connector
  2. From: "Your organization's email server" / To: "Microsoft 365"
  3. Authenticate by: "By verifying that the IP address of the sending server matches one of the following IP addresses, which belong to your organization"
  4. Voer je server-IP in (CIDR mogelijk)
  5. SPF van jouw verzendende domein uitbreiden om dat IP toe te staan: v=spf1 include:spf.protection.outlook.com ip4:1.2.3.4 ~all
  6. WP Mail SMTP → Other SMTP → Host jouwdomein-nl.mail.protection.outlook.com, Port 25, Encryption: TLS (StartTLS), Authentication: Uit

Pas op: deze methode vereist een vast publiek IP. Op shared hosting werkt het niet.

Troubleshooting — meest voorkomende fouten

"535 5.7.139 Authentication unsuccessful, basic authentication is disabled"

Methode 2 (SMTP Auth) werkt niet meer in jouw tenant. Twee opties:

  • Stap over op methode 1 (Microsoft Graph) — aanbevolen.
  • Re-enable SMTP AUTH per mailbox via PowerShell:
    Set-CASMailbox -Identity noreply@jouwdomein.nl -SmtpClientAuthenticationDisabled $false
    Hou er rekening mee dat dit binnenkort permanent wordt geblokkeerd.

"AADSTS7000215: Invalid client secret provided"

Je hebt de Secret ID gekopieerd in plaats van de Value. Of het secret is verlopen. Maak een nieuwe aan en let op: kopieer de Value-kolom, niet de Secret ID. Check ook of de string compleet is — soms wordt de laatste tekens afgekapt bij plakken.

"AADSTS50034: The user account does not exist"

De From Email in WordPress komt niet overeen met een echte mailbox in de tenant. Verifieer in M365 admin dat noreply@jouwdomein.nl bestaat als gewone mailbox of shared mailbox.

"InsufficientPrivileges: Forbidden"

De app-permissie Mail.Send is toegevoegd maar admin consent is niet verleend. Ga terug naar Entra → app → API permissions → "Grant admin consent" klikken.

"This message was not delivered to anyone"

Vaak een SPF/DKIM-issue: het ontvangende systeem (Gmail bijvoorbeeld) accepteert de mail wel maar markeert hem als spam of weigert hem stilletjes. Check je SPF-record:

v=spf1 include:spf.protection.outlook.com ~all

En zet DKIM aan in M365: Microsoft Defender → Email & collaboration → Policies & rules → Threat policies → Email authentication settings → DKIM. Selecteer je domein, schakel "Sign messages for this domain" aan. Volledige uitleg in SPF, DKIM en DMARC instellen.

"Berichten komen wel aan maar in spam"

Reputatie-probleem van je From-adres of ontbrekend DMARC-record. Verifieer dat je zowel SPF, DKIM en DMARC correct hebt ingesteld voor het verzendende domein. Test met mail-tester.com — score van 9+/10 is target.

Best practices voor productie-sites

  1. Gebruik een aparte mailbox voor uitgaande site-mail, bijvoorbeeld noreply@jouwdomein.nl of website@jouwdomein.nl. Niet je persoonlijke mailbox — als die ooit gehackt wordt of verandert, blijft je site-mail werken.
  2. Stel "Reply-To" in op een echt bewaakt adres in WordPress, zodat klanten die op je notificaties antwoorden niet in een zwart gat schrijven.
  3. Documenteer de Tenant ID, Client ID en Secret expiry-datum in een wachtwoord-manager. Secrets die verlopen geven plotseling geen mail meer — meestal merk je het pas als klanten klagen.
  4. Stel een kalender-herinnering 30 dagen vóór secret-expiry. Vernieuwen kost 5 minuten als je goed voorbereid bent, 4 uur als je in paniek bent.
  5. Beperk de app-permissie tot één mailbox (Application Access Policy hierboven). Defense-in-depth.
  6. Monitor de mail-status. WP Mail SMTP Pro heeft een logboek — zelfs in de gratis versie kun je via een add-on zien welke mails wel/niet uitgingen.

Wanneer is M365 NIET de juiste keuze voor WordPress-mail?

Microsoft 365 is geweldig voor kleine tot middelgrote sites met < 5.000 mails per dag. Maar er zijn scenario's waarin je beter een dedicated transactional service gebruikt:

  • Hoge volumes (10.000+ per dag) → Postmark, Mailgun, Sendgrid, AWS SES
  • Marketing-mailings (nieuwsbrieven) → Mailchimp, MailerLite, Campaign Monitor — niet door je M365-mailbox jagen, dat is tegen Microsoft's TOS én slecht voor reputatie.
  • Hoog risico op blacklisting (forms die ingestuurd kunnen worden door spammers) → een gescheiden transactional service voorkomt dat je hele M365-tenant wordt geblacklist.
  • Real-time delivery-tracking nodig (bouncebacks, opens, clicks) → transactional services hebben veel betere logging.

Backup-plan voor als M365 ooit uitvalt

WP Mail SMTP Pro heeft een feature "Backup connection" — als de primaire mailer faalt, schakelt hij automatisch over naar een tweede. Praktische combo:

  • Primair: Microsoft 365 (jouw branded domein, perfect deliverability)
  • Backup: een gratis SMTP-service zoals Brevo (300/dag gratis) — alleen als M365 down is

Klanten merken dan niet dat er een storing is.

Kort: wat te doen als de mails plotseling stoppen

  1. WordPress error_log openen — staan er wp_mail()-fouten in?
  2. WP Mail SMTP → Email Test → loopt hij op een specifieke fout?
  3. Check of de Client Secret is verlopen (entra.microsoft.com → app → Certificates & secrets).
  4. Check of admin-consent nog geldt (soms wordt die ingetrokken na een tenant-reorganisatie).
  5. Check of de mailbox noreply@jouwdomein.nl nog bestaat en niet is gemigreerd of hernoemd.
  6. Check Microsoft service health (status.office.com).

Diepere uitleg over wanneer WordPress-e-mails niet aankomen: WordPress e-mails komen niet aan — oplossen.