In deze blog beschrijf ik List-Unsubscribe. Google en Yahoo stellen de List-Unsubscribe verplicht sinds 2024. Het helpt om de verzendreputatie te beschermen en maakt het voor ontvangers gemakkelijker om zich af te melden voor e-mails. Sommige e-mailproviders, zoals Google en Yahoo, zullen dus vanaf juni 2024 de één-klik uitschrijfoptie verplicht stellen. Het gaat hier met name om marketing emails of emails naar vele afzenders. Ik zelf heb er voor gekozen om de headers van alle uitgaande berichten van de Exchange Servers die ik in beheer heb, aan te passen en een List-Unsubscribe toe te voegen.
Bedrijven zijn dus wettelijk verplicht om een afmeldmogelijkheid in hun mails te zetten.
Het toevoegen van List-Unsubscribe aan de header van een bericht is een optie om te voldoen aan deze wettelijke verplichting. Doen ze dat niet, dan moet er een uitschrijfmogelijkheid worden toegevoegd aan de body van de mail.
Moet je over deze verplichting zorgen maken?
In de wereld van e-mail zijn er veel elementen om mee te jongleren bij het ontwikkelen van een nieuwe strategie. Van segmentatie en open rates tot het optimaliseren van je bezorgbaarheid. Het kan gemakkelijk gebeuren dat iets door de mazen van het net glipt.
Ja, eigenlijk wel. Consumenten klagen dat veel legitieme e-mails in de spam belanden. In deze blog laat ik ook zien wat beheerders van SMTP servers zouden moeten doen.
Wat is de List-Unsubscribe header die verplicht is sinds 2024?
We pakken de uitleg even vanaf het begin. Een ‘header’ bevat technische informatie die je toevoegt aan e-mailberichten, zoals afzender, onderwerp en verzendtijdstip. De ontvangende mailserver pikt deze informatie op en verwerkt deze bij de aflevering en weergave van de e-mail. Verzenders kunnen ook zelf headers toevoegen aan e-mails om instructies te geven aan het ontvangstsysteem. De lezer ziet deze informatie niet, tenzij hij in de broncode kijkt. Bijvoorbeeld, je voegt een DKIM-header toe om de authenticiteit van de afzender te bewijzen. Hetzelfde kun je doen met List-Unsubscribe.
NB: DKIM en DMARC bespreken we in een andere blog.
List-Unsubscribe verplicht sinds 2024 door Google en Yahoo
Dit is een optionele (theoretisch gezien) e-mailheader die e-mailontvangers in staat stelt zich af te melden voor het ontvangen van e-mails zonder te klikken op een uitschrijflink of een afzender als spam of ongewenst te markeren. Omdat ontvangers zich kunnen afmelden in plaats van zich uit te schrijven of een spamklacht in te dienen, beschermt het gebruik van List-Unsubscribe de reputatie van afzenders.
Er zijn verschillende opties naast een voettekstlink die een afzender kan gebruiken om aan deze wettelijke verplichting te voldoen, waaronder het plaatsen van uitschrijflinks of instructies in de tekst van de e-mail of het gebruik van optionele headers zoals List-Unsubscribe. Men beschouwt List-Unsubscribe algemeen als een best practice om te voldoen aan CAN-SPAM element nummer 5.
Hoe voeg je List-Unsubscribe headers toe
Veel inboxproviders gebruiken de List-Unsubscribe header, waaronder Gmail, Yahoo! Mail, iOS Mail en Microsoft-inboxen zoals Outlook. Afzenders kunnen vervolgens kiezen uit twee methoden voor List-Unsubscribe: mailto: of https:.
Kort samengevat, mailto: is e-mail gebaseerd en http: is webgebaseerd.
List-Unsubscribe in combinatie met mailto: verplicht sinds 2024 door Google en Yahoo
Dit type List-Unsubscribe stuurt een afmeldingsverzoek in de vorm van een e-mail naar een opgegeven e-mailadres.
List-Unsubscribe in combinatie met http verplicht sinds 2024 door Google en Yahoo
Dit type List-Unsubscribe gebruikt een URL om de POST-verzoeken af te handelen die door een afmelding worden geactiveerd. Elke inboxprovider behandelt List-Unsubscribe anders en heeft verschillende vereisten en verwachtingen voor afzenders die van plan zijn List-Unsubscribe te gebruiken, dus houd deze richtlijnen in gedachten bij het strategiseren.
List-Unsubscribe header in Gmail
In Gmail verschijnt de List-Unsubscribe header als een hyperlink in het vervolgkeuzemenu naast het “Aan” veld, zoals aangegeven door de rode pijlen in de afbeelding hieronder.
Klik je op meer informatie, dan ga je naar de volgende link.
Gmail beschouwt List-Unsubscribe als een best practice die alle afzenders zouden moeten implementeren. Dat gezegd hebbende, afzenders met een goede verzendreputatie zullen de beste functionaliteit van deze tool zien.
Gmail’s List-Unsubscribe staat zowel mailto: als http: methoden toe, waardoor afzenders de mogelijkheid krijgen om te kiezen welke het beste werkt voor hun e-mailprogramma. Gmail geeft echter de voorkeur aan de mailto: optie en beveelt deze regelmatig aan bij afzenders boven de http: methode.
List-Unsubscribe header in Microsoft Outlook
Om list-unsubscribe op hun platform mogelijk te maken, vereist Microsoft dat afzenders een goede verzendreputatie hebben. Bovendien staat Microsoft afzenders alleen toe om de mailto: methode te gebruiken bij het inschakelen van List-Unsubscribe.
List-Unsubscribe header in iOS Mail
In iOS Mail bevindt de List-Unsubscribe header zich bovenaan het bericht boven de afzenderinformatie, zoals aangegeven door de rode pijl in de afbeelding hieronder.
Net als Microsoft vereist iOS Mail dat afzenders alleen de mailto: methode gebruiken.
Hoe moeten marketeers List-Unsubscribe die verplicht is sinds 2024 gebruiken?
Hoewel het hebben van een prominente uitschrijffunctie bovenaan je berichten intimiderend kan lijken, is er geen reden tot bezorgdheid. Het hebben van deze functie is goed voor je e-mailprogramma!
List-Unsubscribe verbetert niet alleen de gebruikerservaring door een gemakkelijk te gebruiken uitschrijfknop te bieden, maar het helpt ook om je contactenlijst gezond en betrokken te houden en kan je verzendreputatie verbeteren.
Het hebben van een List-Unsubscribe functie in je header biedt een gemakkelijke opt-out voor ontvangers, wat betekent dat ze niet hoeven te zoeken naar een moeilijk te vinden uitschrijflink in de tekst of voettekst van je e-mail als ze geen e-mailcommunicatie meer willen ontvangen.
Het moeilijk maken voor ontvangers om zich uit te schrijven kan leiden tot spam- of ongewenste klachten, wat kan leiden tot een beschadigde verzendreputatie. De gebruikerservaring verbetert met gemakkelijker toegang tot uitschrijven, wat op de lange termijn geweldig is voor marketeers.
Wat betreft consumenten?
Iets om in gedachten te houden met List-Unsubscribe is dat het je niet ontslaat van het instellen (en naleven) van e-mailverwachtingen met je ontvangers. Je moet nog steeds overwegen om ontvangers de kans te geven hun e-mailvoorkeuren aan te geven op het moment van opt-in.
In de 2019 Email Benchmark and Engagement Study ontdekten we dat ontvangers overweldigend de voorkeur geven aan het aangeven van hun voorkeuren bij opt-in dan op enig ander moment. Door de voorkeuren van je ontvangers vanaf het begin te respecteren, heb je meer kans op gezonde open- en betrokkenheidspercentages dan wanneer je iedereen in je contactenlijst elke keer dat je een bericht verstuurt elk bericht zou sturen.
Als ontvangers e-mails ontvangen die ze niet hadden verwacht te ontvangen of waarvoor ze zich niet hebben aangemeld, zijn ze waarschijnlijker geneigd zich uit te schrijven.
Sidebar: Als je bedrijf werkt met of commerciële e-mails verstuurt naar de Europese Unie, zijn er beperkingen op hoe en aan wie je bepaalde berichten kunt sturen onder de Algemene Verordening Gegevensbescherming (AVG). Bekijk onze blogpost over de AVG voor alles wat je moet onthouden bij het werken met burgers van de EU.
Aanpassen header binnen Exchange Online
Omdat ik beheerder ben van twee Exchange Server omgevingen, kan ik dit proces zelf testen en beschrijven. Voor andere mail servers gaat het op een andere manier.
Toegang tot Exchange Admin Center (EAC)
- Ga naar het Exchange Admin Center.
- Log in met je beheerdersaccount.
Een nieuwe transportregel maken
- In het EAC, navigeer naar Mail flow > Rules.
- Klik op Add a rule en selecteer Create a new rule.
Regel configureren
- Geef de regel een unieke naam, bijvoorbeeld “Add List-Unsubscribe Header”.
- Onder Apply this rule if…, selecteer The sender is… en specificeer de afzender(s) waarvoor je de regel wilt toepassen.
- Voeg indien nodig extra voorwaarden toe door op Add condition te klikken.
Actie instellen
- Onder Do the following…, selecteer Modify the message properties > Set a message header.
- Voer de volgende details in:
- Header name: List-Unsubscribe
- Header value:
<mailto:unsubscribe@example.com>
of<https://example.com/unsubscribe>
of beiden via<mailto:unsubscribe@example.com>
,<https://example.com/unsubscribe>
Regel opslaan en testen
- Klik op Save om de regel op te slaan.
- Test de regel door een e-mail te verzenden en te controleren of de List-Unsubscribe header correct is toegevoegd.
Regel monitoren en aanpassen
- Monitor de werking van de regel en pas deze indien nodig aan.
- Voor meer gedetailleerde informatie over het beheren van transportregels, kun je de Microsoft Learn pagina raadplegen.
Hoe werkt dit nu in de praktijk?
Het verzenden van een marketinglijst via e-mail omvat verschillende technische stappen. Hier is een overzicht van het proces:
- Voorbereiding van de e-maillijst:
- De e-maillijst wordt samengesteld met de contactgegevens van de ontvangers.
- Elk contact krijgt een uniek identificatienummer (ID) in de database.
- Genereren van unieke elementen:
- Voor elke e-mail wordt een uniek message ID gegenereerd. Dit helpt bij het volgen en beheren van individuele berichten.
- Een unieke unsubscribe URL wordt gegenereerd voor elke ontvanger. Deze URL bevat een token of ID dat specifiek is voor de ontvanger.
- Verzenden van de e-mails:
- De e-mails worden verzonden via een e-mailserver of een e-mailmarketingplatform.
- Het message ID en de unsubscribe URL worden opgenomen in de e-mail.
- Opslaan van gegevens in de database:
- Het message ID en de unsubscribe URL worden opgeslagen in de database, gekoppeld aan de ontvanger.
- Afmelden via one-click:
- Wanneer een ontvanger op de unsubscribe URL klikt, wordt deze naar een afmeldpagina geleid.
- De afmeldpagina leest het unieke token of ID uit de URL en zoekt in de database welke ontvanger bij deze waarde hoort.
- De ontvanger wordt vervolgens afgemeld en verwijderd of gemarkeerd als afgemeld in de database.
Dit proces zorgt ervoor dat elke e-mail nauwkeurig kan worden gevolgd en dat afmeldingen efficiënt worden verwerkt.
Simulatie via PowerShell
Omdat ik veel met PowerShell bezig ben op dit moment, heb ik geprobeerd om dit proces te verduidelijken. Het is me helaas niet gelukt om de token op te slaan in de MySQL database omdat hiervoor wat meer kennis van PHP vereist is, maar het is gelukt om de List-Unsubscribe te vullen met een uniek Message-ID en unieke unsubscribe url. In de transport rule kun je dan ook het volgende meegeven. Header value:
<mailto:unsubscribe@example.com>
of <https://example.com/unsubscribe>
of beiden via <mailto:unsubscribe@example.com>
, <https://example.com/unsubscribe/opaque-identifier=unique-id>
Met onderstaande PowerShell script maak ik dit duidelijk.
# Function: Generate a new Opaque Message ID (Safe for URLs)
function New-MessageId {
return [guid]::NewGuid().ToString() # Generates a clean unique ID
}
# Function: Send an Email with a List-Unsubscribe Header
function Send-Email {
param (
[string]$userEmail
)
# Load the MailKit and MimeKit assemblies
Add-Type -AssemblyName "MailKit"
Add-Type -AssemblyName "MimeKit"
# Generate a unique, safe Opaque ID for tracking
$opaqueId = New-MessageId
# Construct the unsubscribe URL with the Opaque ID
$unsubscribeLink = "https://www.digitalemels.nl/unsubscribe-vanuit-ontvangen-email/?messageId=" + $opaqueId
# Create email message
$message = New-Object MimeKit.MimeMessage
$message.From.Add([MimeKit.MailboxAddress]::new("Your Name", $userEmail))
$message.To.Add([MimeKit.MailboxAddress]::new("Recipient", $userEmail))
$message.Subject = "Unsubscribe from our newsletter"
# Set a standard Message ID for email servers (not for unsubscribe tracking)
$message.MessageId = "<" + $opaqueId + "@digitalemels.nl>"
# Add the List-Unsubscribe header
$message.Headers.Add("List-Unsubscribe", "<mailto:$( $userEmail )?subject=unsubscribe>, <$( $unsubscribeLink )>")
# Create email body
$textPart = New-Object MimeKit.TextPart("plain")
$textPart.Text = "Click here to unsubscribe: $unsubscribeLink"
$message.Body = $textPart
# Configure SMTP client
$smtp = New-Object MailKit.Net.Smtp.SmtpClient
$smtp.Connect("smtp.gmail.com", 587, [MailKit.Security.SecureSocketOptions]::StartTls)
$smtp.Authenticate("$userEmail", "$appPassword") # Replace with your App Password
# Send email
$smtp.Send($message)
$smtp.Disconnect($true)
Write-Output "Email sent successfully with Opaque ID: $opaqueId"
}
# Function: Process Unsubscribe Request Using Opaque ID
function Test-MessageId {
param (
[string]$messageId
)
# Example: Check if Opaque ID is valid (this would normally query a database)
Write-Output "Processing unsubscribe request for Opaque ID: $messageId"
# If valid, mark the user as unsubscribed (this is a placeholder)
Write-Output "User has been unsubscribed successfully."
}
# Call Send-Email function to send an email
Send-Email -userEmail $userEmail
Test-MessageId -messageId $opaqueId
De bijhorende header ziet er dan als volgt uit:
Return-Path: <REMOVED@gmail.com>
Received: from P-0F39GWB24133 (2a02-a453-6555-1-3c07-7fe1-f9f0-5d1c.fixed6.kpn.net. [2a02:a453:6555:1:3c07:7fe1:f9f0:5d1c])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3efb65899sm514851666b.104.2025.03.23.07.00.33
for <REMOVED@gmail.com>
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 23 Mar 2025 07:00:34 -0700 (PDT)
From: Your Name <REMOVED@gmail.com>
Date: Sun, 23 Mar 2025 15:00:33 +0100
Subject: Unsubscribe from our newsletter
Message-Id: <c11e70cf-7e74-42cb-a85a-868f58bdf912@digitalemels.nl>
To: Recipient <REMOVED@gmail.com>
List-Unsubscribe: <mailto:REMOVED@gmail.com?subject=unsubscribe>, <https://www.digitalemels.nl/unsubscribe-vanuit-ontvangen-email/?messageId=c11e70cf-7e74-42cb-a85a-868f58bdf912>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Click here to unsubscribe: https://www.digitalemels.nl/unsubscribe-vanuit-ontvangen-email/?messageId=c11e70cf-7e74-42cb-a85a-868f58bdf912
Niet altijd zichtbaar
De unsubscribe-knop is niet altijd zichtbaar om verschillende redenen:
- E-mailclient beperkingen: Sommige e-mailclients, zoals bepaalde versies van Outlook, ondersteunen mogelijk niet de weergave van de unsubscribe-knop, zelfs als deze correct is geïmplementeerd.
- Verkeerde implementatie: Als de List-Unsubscribe headers niet correct zijn ingesteld volgens de specificaties, kan de knop niet verschijnen. Dit kan gebeuren als er fouten zijn in de configuratie van de e-mailserver of de headers.
- Spamfilters: E-mails die door spamfilters worden gemarkeerd, kunnen de unsubscribe-knop verbergen om te voorkomen dat gebruikers per ongeluk op schadelijke links klikken.
- E-mailontwerp: Soms kan het ontwerp van de e-mail ervoor zorgen dat de unsubscribe-knop moeilijk te vinden is, bijvoorbeeld als deze te ver naar beneden is geplaatst of in een kleur die slecht zichtbaar is.
Als je specifieke problemen hebt met de zichtbaarheid van de unsubscribe-knop, kan het nuttig zijn om de instellingen en implementatie van je e-mailheaders te controleren en te testen in verschillende e-mailclients.
Voor Gmail geldt nog het volgende
Als de afmeldknop in Gmail niet zichtbaar is, zelfs als de List-Unsubscribe header correct is gedefinieerd, kunnen er verschillende oorzaken zijn:
- Vertrouwen en reputatie van de afzender:
- Gmail toont de afmeldknop alleen voor afzenders met een hoge reputatie. Als je e-maildomein of IP-adres een lage reputatie heeft, kan Gmail besluiten de knop niet weer te geven.
- Complexe algoritmen:
- Gmail gebruikt complexe algoritmen om te bepalen wanneer de afmeldknop wordt weergegeven. Zelfs als de headers correct zijn, kan het zijn dat Gmail de knop niet toont vanwege andere factoren die ze in overweging nemen.
- Eerdere afmeldingen:
- Als een ontvanger zich al eerder heeft afgemeld via de afmeldknop, kan Gmail besluiten de knop niet opnieuw weer te geven voor dezelfde afzender.
- E-mailinhoud en opmaak:
- De inhoud en opmaak van je e-mail kunnen ook invloed hebben op de zichtbaarheid van de afmeldknop. Zorg ervoor dat je e-mails voldoen aan de beste praktijken voor e-mailmarketing en dat ze niet als spam worden gemarkeerd.
Om dit probleem op te lossen, kun je de volgende stappen overwegen:
Gebruik een betrouwbaar e-mailmarketingplatform dat je kan helpen bij het beheren van je afmeldingen en het verbeteren van je afzenderreputatie.
Verbeter je afzenderreputatie door ervoor te zorgen dat je e-maillijst schoon is en dat je alleen e-mails verstuurt naar ontvangers die zich hebben aangemeld.
Test je e-mails in verschillende Gmail-accounts om te controleren of de afmeldknop zichtbaar is.
Meer informatie over Microsoft Exchange Server vind je hier. Meer informatie over de auteur van deze blog post vind je hier.