Mail Templates in Joomla
Elke Joomla website kan e-mail versturen: Een nieuwe gebruiker registreert zich en krijgt een welkomstbericht. Een bezoeker vult een contactformulier in en de eigenaar krijgt een melding. Iemand vergeet zijn wachtwoord en vraagt een herstellink aan. Al die berichten komen uit een stil, vaak vergeten hoekje van Joomla: het Mail Templates component.
De meeste website-eigenaren weten dit niet, waardoor elke automatische e-mail voor altijd de standaardtekst behoudt. Dat is een gemiste kans. Met een paar minuten werk kun je de onderwerpsregels aanpassen, de tekst in je eigen stijl herschrijven, overschakelen naar mooi opgemaakte HTML-e-mails en zelfs je logo toevoegen, en dat allemaal zonder ook maar één regel code aan te raken.
Joomla regelt dit met een klein core component: Mail Templates (com_mails). Die bewaart de tekst van elke systeem-e-mail in de database, laat je die in de beheeromgeving bewerken en ondersteunt een aparte variant per taal voor elk bericht.
Hoe Joomla ervoor zorgt dat je zelf de controle hebt over elke automatische e-mail.
Dit artikel legt uit hoe Mail Templates werken, van het bewerken van de welkomstmail als site-eigenaar tot het registreren van je eigen templates als ontwikkelaar. Het doel is om eigenaren, beheerders en ontwikkelaars volledige controle te geven over de e-mail die Joomla verstuurt.
1. De basis
1.1 Wat zijn Mail Templates?
Een mailtemplate is de opgeslagen tekst van een automatische e-mail die Joomla verstuurt. In plaats van de woorden "Bedankt voor je registratie" vast in het programma te zetten, bewaart Joomla die tekst in de database. Als er iets gebeurt, bijvoorbeeld een nieuwe registratie, laadt Joomla de bijbehorende template, vult de details in (de naam van de gebruiker, de sitenaam, een activatielink) en verstuurt het resultaat.
De component Mail Templates (com_mails) is het scherm in de beheeromgeving waar je die opgeslagen teksten leest en bewerkt. Hij zit sinds Joomla 4 standaard in de Joomla-kern.
Kort gezegd doet de component drie dingen:
- Hij toont elke mailtemplate die door Joomla en je extensies is geregistreerd.
- Hij laat je het onderwerp, de platte-tekstversie en de HTML-versie van elke template bewerken.
- Hij laat je voor elke sitetaal een aparte versie van een template maken.
1.2 Wat hij niet doet
Dit is veruit het belangrijkste om vooraf te begrijpen. De component Mail Templates beheert de inhoud van e-mails. Hij verstuurt ze niet en hij bepaalt niet hoe ze je server verlaten.
Hoe e-mail echt wordt afgeleverd, via PHP mail, Sendmail of SMTP, stel je in bij Systeem → Algemene instellingen → Server → Mailinstellingen. Zie het zo: de Algemene instellingen zijn het postkantoor en Mail Templates is het briefpapier. Je kunt prachtig briefpapier hebben en toch niets bezorgen als het postkantoor dicht is. We komen op deze tweedeling terug in sectie 12.
1.3 Waar vind ik het?
In de Joomla 6-beheeromgeving zit de component onder het menu Systeem:
Systeem → Sjablonen → Mailtemplates (de lijst met alle templates)
Systeem → Mailtemplates → Opties (instellingen voor de hele component)
De directe link is index.php?option=com_mails&view=templates. De bestanden van de component staan in administrator/components/com_mails/.
1.4 Een eerste blik op de lijst
Open de lijst en je ziet een regel per template. Elke regel toont een template-ID zoals com_users.password_reset of com_contact.mail, het onderwerp en welke extensie de eigenaar is. Het ID gebruikt puntnotatie: het eerste deel is de extensie (com_users) en de rest benoemt het specifieke bericht.
Aan die naamgeving zie je in een oogopslag wie wat verstuurt. Alles wat met com_users begint, hoort bij het gebruikerssysteem. Alles wat met com_contact begint, hoort bij de contactformulieren.
2. De anatomie van een mailtemplate
Klik op een regel om de editor te openen. Een template bestaat uit een paar duidelijke onderdelen. Als je die begrijpt, wordt de rest makkelijk.
2.1 De bewerkbare velden
| Veld | Wat het bevat |
|---|---|
| Onderwerp | De onderwerpregel van de e-mail. Mag plaatshouder-tags bevatten. |
| Tekst | De platte-tekstversie van het bericht. |
| HTML-tekst | De HTML-versie, bewerkt met een gewone WYSIWYG-editor. |
| Bijlagen | Een optionele lijst met bestanden die je aan de e-mail koppelt. |
Het Onderwerp en de Tekst zijn er altijd. De HTML-tekst is alleen van belang als je HTML-mail verstuurt (zie sectie 5). Onder deze velden zit een tabblad Opties met mailinstellingen per template, behandeld in sectie 8.
2.2 De twee identificatiegegevens
Elke template wordt herkend aan twee waarden samen, niet aan een:
- Template-ID: de unieke sleutel, bijvoorbeeld
com_users.password_reset. - Taal: de taalcode, bijvoorbeeld
en-GB, of een lege waarde voor de basistemplate die voor alle talen geldt.
Dit paar is de sleutel tot meertalige e-mail, wat we in sectie 6 behandelen. Onthoud voorlopig alleen: een ID kan meerdere taalversies hebben.
2.3 De beschikbare tags
Elke template begrijpt een vaste set plaatshouder-tags, die in de editor staan. De template voor het contactformulier biedt bijvoorbeeld tags zoals {SITENAME}, {NAME}, {EMAIL}, {SUBJECT} en {BODY}. Je kunt alleen de tags gebruiken die een template aanbiedt, want Joomla levert alleen voor die tags gegevens aan. Hoe tags werken, leggen we uit in sectie 4.
3. Een template bewerken als beheerder
Dit is de dagelijkse taak: de tekst van een e-mail aanpassen. Laten we dat doorlopen met de welkomstmail die nieuwe gebruikers krijgen.
3.1 Een uitgewerkt voorbeeld
- Ga naar
Systeem → Sjablonen → Mailtemplates. - Zoek
com_users.registration.user.admin_activation(het bericht dat naar een nieuwe gebruiker gaat die goedkeuring van een beheerder nodig heeft). - Klik erop om de editor te openen.
- Wijzig het Onderwerp, bijvoorbeeld naar
Welkom bij {SITENAME} - nog een stap. - Herschrijf de Tekst in je eigen woorden en houd daarbij de tags die je nodig hebt, zoals
{NAME}en{ACTIVATE}. - Klik op Opslaan.
De eerstvolgende registratie gebruikt al je nieuwe tekst. Er is geen cache om te legen en geen bestand om te uploaden.
3.2 Houd de tags die je nodig hebt
De meest gemaakte bewerkfout is per ongeluk een tag verwijderen. Als je {ACTIVATE} uit een activatiemail haalt, krijgt de gebruiker nooit de activatielink en kan hij zich nooit afronden. Herschrijf de zinnen gerust, maar houd de tags die de belangrijke waarden dragen.
Om dit makkelijker te maken, toont de editor de beschikbare tags van de template als aanklikbare knoppen. Zet de cursor waar je een waarde wilt en klik op de tag om die in te voegen, in plaats van de accolades met de hand te typen. Zo voorkom je typefouten als {NMAE} die stilletjes mislukken.
3.3 Terugzetten naar de standaard
Als je een template te ver hebt aangepast en de oorspronkelijke tekst terug wilt, hoef je niets opnieuw te installeren. De editor heeft drie knoppen Terugzetten naar standaard, een voor het Onderwerp, een voor de Tekst en een voor de HTML-tekst. Elke knop zet dat veld terug naar de standaardinhoud die Joomla voor de template meelevert.
Het terugzetten werkt per veld, dus je kunt het onderwerp herstellen en je bewerkte tekst houden, of andersom. De wijziging wordt pas definitief als je op Opslaan klikt, dus een terugzetting die je niet wilde bewaren maak je ongedaan door weg te gaan zonder op te slaan.
3.4 Templates kun je niet verwijderen
Je merkt dat er geen knop Verwijderen in de lijst staat. Dat is met opzet. Een template bestaat omdat een extensie verwacht die te kunnen versturen. Hem verwijderen zou die functie breken. Je kunt een template wel bewerken, maar de kern laat je er niet een via de interface verwijderen.
Naar boven4. Plaatshouder-tags
Tags zijn de manier waarop Joomla actuele gegevens in een vaste tekst plaatst. Ze vormen het hart van het hele systeem.
4.1 Hoe een eenvoudige tag werkt
Een tag is een woord in hoofdletters tussen accolades, zoals {NAME}. Als Joomla de e-mail verstuurt, vervangt het elke tag door de bijbehorende waarde. Tagnamen zijn niet hoofdlettergevoelig, dus {NAME} en {name} gedragen zich hetzelfde.
Templatetekst: Hallo {NAME}, welkom bij {SITENAME}.
Aangeleverd: NAME = Anna, SITENAME = Peters Joomla-site
Verstuurd: Hallo Anna, welkom bij Peters Joomla-site.
Je kunt alleen tags gebruiken die de template noemt, want de code achter die template levert precies die waarden aan en geen andere.
4.2 Herhalende (array-)tags
Sommige e-mails moeten meerdere items op een rij zetten, zoals een samenvatting van recente activiteit. Daarvoor ondersteunt Joomla een herhalend blok:
{LOGS}
- {MESSAGE} op {DATE}
{/LOGS}
De tekst tussen {LOGS} en {/LOGS} wordt een keer herhaald voor elk item in de aangeleverde lijst, waarbij de tags binnenin telkens worden ingevuld. De meldingsmail van de actielogboeken gebruikt precies dit patroon.
4.3 Platte-tekst- en HTML-versies van een tag
Links moeten er in platte tekst vaak anders uitzien dan in HTML. Joomla lost dit op met gekoppelde tags. De wachtwoordherstelmail biedt bijvoorbeeld zowel {LINK_TEXT} als {LINK_HTML}. De platte tekst gebruikt de kale URL, terwijl de HTML-tekst een aanklikbare link gebruikt. Gebruik de juiste in het juiste tekstveld.
4.4 Veilige en onveilige tags
Sommige tagwaarden komen van bezoekers, zoals het bericht dat een onbekende in een contactformulier typt. In een HTML-mail zou ruwe bezoekersinvoer HTML of script kunnen bevatten. Joomla markeert zulke tags als onveilig en zet ze in de HTML-tekst automatisch om, zodat de tekst getoond wordt zoals hij is geschreven in plaats van als code te draaien. Je stelt dit niet zelf in; het zit ingebouwd in de templates die het nodig hebben. Weet alleen dat door bezoekers aangeleverde tags veilig worden verwerkt.
Naar boven5. HTML versus platte-tekstmails
5.1 De optie Mailstijl
Standaard verstuurt Joomla e-mail in platte tekst. Om opgemaakte mail te versturen wijzig je een component-optie bij Mailtemplates → Opties → Mailstijl:
| Waarde | Wat er wordt verstuurd |
|---|---|
plaintext |
Alleen platte tekst. De standaard. |
html |
Alleen HTML. |
both |
Een multipart-mail met beide versies; het mailprogramma kiest er een. |
De veiligste moderne keuze is both. HTML-lezers zien je opgemaakte mail, terwijl tekst-only programma's en strenge spamfilters toch een schone platte versie krijgen.
5.2 De HTML-layoutwrapper
Als HTML-mail aanstaat, verstuurt Joomla niet zomaar de kale HTML-tekst. Het verpakt die inhoud in een layout, een omringend sjabloon dat een vaste koptekst, voettekst en opmaak toevoegt. De standaardlayout heet mailtemplate. Dit betekent dat je in het veld HTML-tekst alleen het bericht zelf schrijft, en dat Joomla het voor je inkadert.
Je stuurt de wrapper aan met twee opties:
| Optie | Effect |
|---|---|
| HTML-layout uitschakelen | Zet de wrapper uit en verstuur de HTML-tekst zoals hij is. |
| HTML-layout | Kies welk layoutbestand de inhoud inkadert. |
5.3 Je logo toevoegen
De component-opties bevatten een instelling Logo. Kies een afbeelding met het mediaveld en de standaard HTML-layout zet die bovenaan elke HTML-mail. Het logo wordt inline meegestuurd, dus het verschijnt zelfs als het mailprogramma externe afbeeldingen blokkeert. Deze ene instelling is de makkelijkste manier om Joomla-mail er bij je merk te laten horen.
5.4 De layout overschrijven voor volledige controle
De wrapper is een gewone Joomla-layout, dus je kunt hem in je sjabloon overschrijven (een override) voor volledige controle over het mailontwerp. Het standaardbestand staat hier:
layouts/joomla/mail/mailtemplate.php
Kopieer het naar de override-map van je sitesjabloon en bewerk de kopie:
templates/jouw_sjabloon/html/layouts/joomla/mail/mailtemplate.php
De snelste manier om dat bestand te maken is via Systeem → Sitesjablonen → jouw sjabloon → Overrides aanmaken → Layouts → joomla → mail. Daar kun je tabelbreedtes, lettertypes en kleuren instellen die HTML-mails overleven. Houd het tabelgebaseerd en met inline-stijl, want mailprogramma's negeren de meeste moderne CSS. Een sjabloon kan ook meerdere layouts aanbieden, zodat verschillende mails verschillende ontwerpen gebruiken.
6. Meertalige mailtemplates
6.1 Een template, veel talen
Op een meertalige site moet een Nederlandse bezoeker een Nederlandse mail krijgen en een Franse bezoeker een Franse. Joomla regelt dit met de tweede identificatie uit sectie 2.2: de taalcode. Elke template kan een aparte regel per taal hebben, die allemaal hetzelfde template-ID delen.
com_users.password_reset + (basis) de terugval voor elke taal
com_users.password_reset + en-GB de Engelse versie
com_users.password_reset + nl-NL de Nederlandse versie
6.2 Hoe Joomla kiest
Als Joomla een template verstuurt, zoekt het de regel die bij de actieve taal hoort. Bestaat er geen regel voor die taal, dan valt het terug op de basisregel (die met een lege taalwaarde). Je hoeft dus niet elke template te vertalen: onvertaalde templates gebruiken gewoon de standaardtekst.
6.3 Een vertaling maken
Om een taalversie toe te voegen, open je een template, gebruik je de taalkeuze in de werkbalk van de editor om naar de doeltaal te schakelen en sla je je vertaalde tekst op. Joomla slaat die op als een nieuwe regel voor die taal en laat het origineel onaangeroerd. De volgende mail in die taal gebruikt automatisch je vertaling.
6.4 Een praktische tip
Vertaal eerst de drukke, op gebruikers gerichte templates: registratie, activatie en wachtwoordherstel. De zelden geziene beheerdersmeldingen mogen prima in de standaardtaal blijven zonder dat iemand er last van heeft.
Naar boven7. Bijlagen
7.1 De bijlagemap
Een template kan bijlagen meesturen, maar om veiligheidsredenen laat Joomla je niet zomaar elk bestand op de server koppelen. Je stelt eerst een Bijlagemap in bij Mailtemplates → Opties. Alleen bestanden binnen die map kunnen worden gekoppeld. Zo voorkom je dat een template naar een gevoelig bestand elders op het systeem wordt gewezen.
7.2 Een bijlage aan een template toevoegen
In de template-editor is het gebied Bijlagen een kleine herhaalbare tabel. Elke regel heeft twee waarden:
| Veld | Betekenis |
|---|---|
| Bestand | Een bestand gekozen uit de ingestelde bijlagemap. |
| Naam | De bestandsnaam die de ontvanger ziet (mag tags bevatten). |
Een typisch gebruik is een pdf met algemene voorwaarden bij de registratiemail, of een factuursjabloon bij een orderbevestiging die een externe extensie verstuurt.
7.3 Wanneer je bijlagen beter vermijdt
Bijlagen maken mails groter en de kans dat ze als spam worden gemarkeerd groter. Voor documenten die vaak veranderen is het meestal beter een downloadlink in de tekst op te nemen dan het bestand zelf mee te sturen.
Naar boven8. Mailinstellingen per template
8.1 Waarom de algemene instellingen overschrijven
Normaal verlaat elke mail je site met het ene afzenderadres en de ene verzendmethode uit de Algemene instellingen. Soms wil je dat een enkele template zich anders gedraagt, bijvoorbeeld om supportantwoorden vanaf support@ te versturen terwijl al het andere van noreply@ komt. Joomla maakt dit mogelijk met een override per template.
8.2 Inschakelen
De override staat standaard uit en wordt afgeschermd door een component-optie. Zet eerst Mailtemplates → Opties → Alternatieve mailconfiguratie = Ja. Daarna krijgt elke template een tabblad Opties waar je het volgende kunt instellen:
| Instelling | Doel |
|---|---|
| Afzender-e-mail / Afzendernaam | De afzender die de ontvanger voor deze template ziet. |
| Antwoord-aan / Antwoord-aan-naam | Waar antwoorden naartoe gaan. |
| Verzendmethode | Verzendmethode voor deze template: PHP mail, Sendmail of SMTP. |
| SMTP-instellingen | Host, poort, beveiliging en inloggegevens als de methode SMTP is. |
8.3 Een kopie versturen
Een aparte optie, Kopie sturen naar e-mail, kun je in de component-opties inschakelen. Eenmaal aan krijgt elke template een veld Kopie naar, zodat je stilletjes een kopie van bijvoorbeeld elke registratiemail naar een interne mailbox kunt sturen voor de administratie.
8.4 Gebruik dit met mate
SMTP-instellingen per template zijn krachtig, maar je vergeet ze makkelijk. Als supportmail ineens stopt, is een override verstopt in een enkele template een lastige plek om te zoeken. Houd overrides tot een minimum beperkt en noteer overal waar je ze gebruikt.
Naar boven9. Onder de motorkap: de database
9.1 De enige tabel
Elke mailtemplate staat in een tabel:
#__mail_templates een regel per template per taal
Er is geen aparte tabel voor metadata of assets. De kolommen zijn:
template_id varchar(127) de sleutel, bijv. com_users.password_reset
extension varchar(127) eigenaar-extensie, bijv. com_users
language char(7) taalcode, of leeg voor de basisregel
subject varchar(255) de onderwerpregel
body text de platte-tekstversie
htmlbody mediumtext de HTML-versie
attachments text JSON-lijst met bijlagen
params text JSON met tags en instellingen per template
9.2 De samengestelde sleutel
De primaire sleutel is het paar (template_id, language), niet template_id alleen. Dat is precies waarom een template meerdere taalregels kan hebben: elke regel is een unieke combinatie van ID en taal. De basisregel gebruikt simpelweg een lege taalwaarde.
9.3 Wat er in JSON staat
Twee kolommen bevatten JSON in plaats van platte waarden:
attachments: een lijst met objecten, elk met eenfileen eenname.params: de lijst met toegestane tags plus eventuele mailinstellingen per template (afzender, antwoord-aan, SMTP, kopie-naar).
Daarom verschillen de beschikbare tags per template: ze staan in de eigen params van die template.
9.4 Templates lezen met SQL
Om te zien welke templates je hebt aangepast ten opzichte van een basisregel, of om een meertalige opzet te controleren, helpt een snelle query. Vervang jos_ door je echte prefix:
SELECT template_id, language, subject
FROM jos_mail_templates
ORDER BY template_id, language;
Naar boven10. De MailTemplate-API (ontwikkelaarsblik)
Voor ontwikkelaars draait het hele systeem om een class: Joomla\CMS\Mail\MailTemplate in libraries/src/Mail/MailTemplate.php. Hij bestaat sinds Joomla 4.0.
10.1 Een template versturen
Een e-mail vanuit een template versturen is kort en leesbaar:
use Joomla\CMS\Mail\MailTemplate;
use Joomla\CMS\Factory;
$app = Factory::getApplication();
$lang = $app->getLanguage()->getTag();
$mailer = new MailTemplate('com_users.password_reset', $lang);
$mailer->addTemplateData([
'name' => $user->name,
'sitename' => $app->get('sitename'),
'link_text' => $plainUrl,
'link_html' => '<a href="' . $url . '">Wachtwoord herstellen</a>',
]);
$mailer->addRecipient($user->email, $user->name);
$mailer->send();
10.2 De belangrijkste methodes
| Methode | Wat hij doet |
|---|---|
__construct($templateId, $language) |
Laadt de template voor dat ID en die taal. |
addTemplateData($data) |
Levert de waarden aan die de tags vullen. |
addRecipient($mail, $name, $type) |
Voegt een To-, CC- of BCC-ontvanger toe. |
setReplyTo($mail, $name) |
Stelt het antwoord-aan-adres in. |
addAttachment($name, $file) |
Koppelt een bestand op het moment van versturen. |
send() |
Verwerkt de tags en verstuurt de e-mail. |
10.3 Wat send() werkelijk doet
send()
└─ Laad de regel voor (template_id, language), val terug op basis
└─ Haal onderwerp + tekst door Text::_() voor vertaling
└─ Vervang elke {TAG} door de aangeleverde data
└─ Zet onveilige tags in de HTML-tekst om
└─ Verpak de HTML-tekst in de layout, voeg het inline-logo toe
└─ Pas eventuele afzender-/SMTP-override per template toe
└─ Koppel bestanden uit de bijlagemap
└─ Geef het afgewerkte bericht aan de mailer om te versturen
Merk op dat het onderwerp en de tekst door Text::_() gaan. Dat betekent dat een template een taalsleutel kan opslaan in plaats van letterlijke tekst, en dat Joomla die vertaalt vanuit de taalbestanden. Zo blijven kerntemplates standaard vertaalbaar.
10.4 De gebeurtenis onMailBeforeRendering
Voordat send() de tags vervangt, stuurt het een gebeurtenis uit zodat andere plugins de e-mail onderweg kunnen aanpassen:
$app->getDispatcher()->dispatch(
'onMailBeforeRendering',
new BeforeRenderingMailTemplateEvent('onMailBeforeRendering', [
'templateId' => $this->template_id,
'subject' => $this,
])
);
Een plugin die naar onMailBeforeRendering luistert, krijgt het MailTemplate-object en het template-ID, zodat hij extra plaatshouder-data kan toevoegen, een waarde uit een eigen veld kan injecteren, een trackinglink kan toevoegen of een BCC voor controle kan instellen, zonder de kern of de template te bewerken. Dit is de schone, update-veilige manier om mails site-breed te verrijken.
public function onMailBeforeRendering(BeforeRenderingMailTemplateEvent $event): void
{
if ($event->getTemplateId() === 'com_users.password_reset') {
$event->getTemplate()->addTemplateData(['support_phone' => '+31 555 123']);
}
}
Naar boven11. Je eigen template registreren
Als je een extensie bouwt die e-mail verstuurt, kun je er het beste een mailtemplate voor registreren. Dan kunnen site-eigenaren jouw tekst op dezelfde manier bewerken als de kernmail, en wordt je tekst vertaalbaar.
11.1 De template aanmaken
De class biedt een hulpmethode om een nieuwe basistemplate in te voegen:
use Joomla\CMS\Mail\MailTemplate;
MailTemplate::createTemplate(
'com_myshop.order_confirmation', // template-id
'PLG_MYSHOP_ORDER_SUBJECT', // onderwerp (een taalsleutel)
'PLG_MYSHOP_ORDER_BODY', // platte tekst (een taalsleutel)
['name', 'order_id', 'total', 'sitename'] // de toegestane tags
);
Het eerste deel van het ID (com_myshop) wordt automatisch de eigenaar-extensie. Er is ook updateTemplate() om een template te wijzigen en deleteTemplate() om al zijn taalregels te verwijderen, wat je extensie vanuit zijn deinstallatie-script zou moeten aanroepen.
11.2 Waar registreren
Registreer de template wanneer je extensie wordt geinstalleerd, in de install- of update-methode van je installer-script, zodat de regel bestaat voordat je code ooit probeert te versturen. Gebruik taalsleutels voor het onderwerp en de tekst, zodat vertalers de tekst in je taalbestanden kunnen lokaliseren.
11.3 Waarom de moeite
Veel extensies zetten hun mails vast in code en geven de eigenaar geen enkele manier om ze te wijzigen. Door een echte mailtemplate te registreren krijg je bewerken in de beheeromgeving, meertalige ondersteuning, de HTML-layout en bijlagen gratis, en voelt je extensie als een vast onderdeel van Joomla.
Naar boven12. Mailtemplates versus mailverzending
Deze sectie verdient zijn eigen ruimte, want deze twee verwarren is de nummer-een oorzaak van mailproblemen in Joomla.
| Onderwerp | Waar het zit |
|---|---|
| De woorden in de mail | Mailtemplates (com_mails) |
| HTML vs plat, logo, layout | Opties van Mailtemplates |
| Afzender-override per template | Mailtemplates (indien ingeschakeld) |
| Hoe mail de server verlaat | Algemene instellingen → Server → Mail |
| Standaardafzender voor de hele site | Algemene instellingen |
| SMTP-host, -poort, -login (sitebreed) | Algemene instellingen |
Als er helemaal geen mail aankomt, ligt het probleem bijna altijd bij de verzending, dus controleer de Algemene instellingen en je SMTP-gegevens, niet de templates. Als er mail aankomt maar het verkeerde zegt, dan is dat een template. Weten welk scherm welk probleem bezit, scheelt uren gokwerk.
Een snelle manier om alleen de verzending te testen is de testmailknop in de Algemene instellingen, die de template com_config.test_mail gebruikt. Komt die aan, dan werkt je postkantoor en zit elk resterend probleem in het briefpapier.
13. Web Services-API
Mailtemplates worden in de kern niet ontsloten via de Web Services-API (REST) van Joomla. Er is geen com_mails-eindpunt onder /api/index.php/v1/. Templates worden behandeld als een configuratiegebied dat alleen voor beheerders is, bewerkt in de beheeromgeving en niet op afstand beheerd.
Als je templates echt van buiten Joomla moet beheren, kun je rechtstreeks naar de tabel #__mail_templates schrijven vanuit een vertrouwd script, of een kleine eigen API-plugin bouwen die MailTemplate::createTemplate() en updateTemplate() omhult. Voor bijna elke site is het backend-scherm genoeg.
14. Afleverbaarheid: de SEO van e-mail
E-mail heeft geen zoekposities, maar wel een vergelijkbare strijd: in de inbox komen in plaats van in de spammap. Een perfecte template is verspild als het bericht nooit aankomt. Deze factoren bepalen dat, en de meeste zitten buiten de template:
- SPF, DKIM en DMARC: DNS-records die bewijzen dat je server mag versturen voor je domein. Zonder die records wantrouwen mailproviders je mail. Dit is veruit de grootste factor voor afleverbaarheid en wordt op DNS-niveau ingesteld, niet in Joomla.
- Een echt afzenderadres: verstuur vanaf een adres op je eigen domein, niet vanaf een gratis
gmail.com-adres. Een ander domein nadoen krijgt je geblokkeerd. - Geauthenticeerde SMTP: een goede SMTP-relay of transactionele maildienst levert veel beter af dan ruwe PHP mail. Stel dit in bij de Algemene instellingen.
- Een platte-tekstdeel: gebruik Mailstijl
bothzodat spamfilters altijd schone tekst naast je HTML zien. - Eerlijke onderwerpen: vermijd hoofdletters en spamwoorden in de onderwerpen die je bewerkt. Dit is de enige knop voor afleverbaarheid die wel in de template zit.
Kort gezegd: schrijf goede templates, maar win afleverbaarheid op het niveau van DNS en verzending.
Naar boven15. Veelgemaakte fouten en valkuilen
15.1 Templates bewerken om niet-afleveren te verhelpen
Symptoom: Er komt geen mail aan, dus je blijft de templates herschrijven.
Oplossing: Templates zijn inhoud, geen aflevering. Test de verzending met de testmailknop in de Algemene instellingen en herstel daar de SMTP-instellingen.
15.2 Een verwijderde tag breekt de mail
Symptoom: Gebruikers krijgen een registratiemail zonder activatielink en kunnen zich niet afronden.
Oplossing: Je hebt de tag {ACTIVATE} tijdens het bewerken verwijderd. Zet hem terug. Houd elke tag die een verplichte waarde draagt; verander alleen de woorden eromheen.
15.3 HTML ziet er in sommige programma's verkeerd uit
Symptoom: De mail ziet er in het ene programma prima uit en in het andere als een rommeltje.
Oplossing: Houd de HTML-tekst eenvoudig en laat de standaardlayout de opmaak doen. Mailprogramma's ondersteunen veel minder CSS dan browsers. Gebruik Mailstijl both zodat er altijd een platte terugval is.
15.4 Een vergeten override per template
Symptoom: Een type mail komt van het verkeerde adres of mislukt terwijl al het andere werkt.
Oplossing: Controleer het tabblad Opties van die template op een alternatieve mailconfiguratie die je eerder hebt ingesteld en vergeten bent.
15.5 Ontbrekende vertalingen sturen de verkeerde taal
Symptoom: Een Nederlandse gebruiker krijgt een Engelse mail.
Oplossing: Er is geen nl-NL-regel voor die template, dus Joomla gebruikte de basisregel. Maak de Nederlandse versie via de taalkeuze in de editor.
15.6 Verkeerde linktag in de verkeerde tekst
Symptoom: De HTML-mail toont een kale URL, of de platte mail toont HTML-opmaak.
Oplossing: Gebruik {LINK_HTML} in de HTML-tekst en {LINK_TEXT} in de platte Tekst, niet andersom.
16. Best practices
Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:
- Mailtemplates bepalen de inhoud; de Algemene instellingen bepalen de aflevering. Repareer het juiste scherm.
- Verwijder nooit een tag die je niet begrijpt. Herschrijf de woorden, houd de tags.
- Zet Mailstijl op
bothzodat elke ontvanger een bruikbare versie krijgt. - Voeg je logo een keer toe in de opties om elke HTML-mail van je merk te voorzien.
- Vertaal eerst de op gebruikers gerichte templates: registratie, activatie, wachtwoordherstel.
- Houd de HTML-tekst eenvoudig en leun voor de opmaak op de layout.
- Gebruik overrides per template met mate en noteer waar je ze gebruikt.
- Win de inbox met SPF, DKIM, DMARC en geauthenticeerde SMTP, niet met templatebewerkingen.
- Bouw je een extensie die e-mail verstuurt, registreer er dan een echte mailtemplate voor.
17. In het kort
COMPONENT Systeem → Sjablonen → Mailtemplates
DIRECTE LINK index.php?option=com_mails&view=templates
OPTIES Mailtemplates → Opties
TABEL #__mail_templates (sleutel: template_id + language)
KERNKOLOMMEN template_id, language, subject, body, htmlbody
JSON-KOLOMMEN attachments, params (tags + instellingen per template)
TEMPLATE-ID extensie.bericht, bijv. com_users.password_reset
MAILSTIJL plaintext (standaard) | html | both
HTML-WRAPPER standaardlayout "mailtemplate", optioneel logo
LAYOUT-OVERRIDE templates/<tpl>/html/layouts/joomla/mail/mailtemplate.php
TERUGZETTEN knoppen Terugzetten naar standaard per veld in de editor
GEBEURTENIS onMailBeforeRendering (BeforeRenderingMailTemplateEvent)
TAGS {NAME} array {LOGS}..{/LOGS} paar {LINK_TEXT}/{LINK_HTML}
TAAL regels per taal, basisregel (leeg) is de terugval
BIJLAGEN alleen uit de ingestelde Bijlagemap
OVERRIDE Opties → Alternatieve mailconfiguratie = Ja
AFLEVERING NIET hier - Algemene instellingen → Server → Mail
API-CLASS Joomla\CMS\Mail\MailTemplate (sinds Joomla 4.0)
REGISTREREN MailTemplate::createTemplate(id, subject, body, tags)
WEB SERVICES niet ontsloten via de REST-API
Naar boven18. Samenvatting
De component Mailtemplates is klein, stil en makkelijk over het hoofd te zien, en toch bepaalt hij elke automatische e-mail die je Joomla-site verstuurt. Ermee kun je:
- Onderwerpen en teksten herschrijven in je eigen woorden, zonder code.
- Opgemaakte HTML-mail versturen met je logo en een vaste layout.
- Elk bericht per taal vertalen, met een verstandige terugval.
- Veilig bestanden koppelen uit een beheerde map.
- De afzender overschrijven voor afzonderlijke templates wanneer je dat nodig hebt.
- Je eigen templates registreren als ontwikkelaar, zodat je extensie native aanvoelt.
De kerngedachte is de scheiding tussen inhoud en aflevering: templates vormen het bericht, terwijl de Algemene instellingen en je DNS bepalen of het aankomt. Krijg beide goed en je site spreekt duidelijk en betrouwbaar tot je gebruikers.
Als je Joomla-mails nog de standaardtekst gebruiken, er in sommige programma's vreemd uitzien of stilletjes in de spam belanden, loont het om te beginnen bij de component Mailtemplates en de mailinstellingen daarachter. Een paar zorgvuldige aanpassingen hier zorgen dat elk bericht dat je site verstuurt er echt als het jouwe uitziet en aanvoelt.
Naar boven

Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.
Veelgestelde vragen
Joomla slaat alle systeeme-mails op in de component Mail Templates (com_mails). Ga naar:
Systeem → Templates → Mail Templates
Daar kun je het onderwerp, de platte tekst en de HTML-versie van e-mails aanpassen, zoals registratie-e-mails, wachtwoordresets en meldingen van contactformulieren. Je hoeft hiervoor geen code aan te passen of bestanden te uploaden.
Mail Templates bepaalt alleen de inhoud van de e-mails, niet de verzending ervan. Controleer daarom:
Systeem → Algemene instellingen → Server → Mailinstellingen
Problemen met SMTP, authenticatie, SPF, DKIM of DMARC zijn meestal de oorzaak van bezorgingsproblemen, niet de mailtemplate zelf.
Ja, dat kan. Joomla ondersteunt HTML-e-mails en kan automatisch een logo en opmaak toevoegen. Stel in:
Mail Templates → Opties → Mail Style → both
Configureer daarna je logo in de instellingen van Mail Templates. Met de optie both verstuurt Joomla zowel een HTML-versie als een platte tekstversie van de e-mail. Dat zorgt meestal voor de beste compatibiliteit en afleverbaarheid.
Deze tags worden automatisch vervangen door echte gegevens wanneer de e-mail wordt verzonden. Bijvoorbeeld:
Hallo {NAME}, welkom op {SITENAME}.
wordt bijvoorbeeld:
Hallo Jan, welkom op Mijn Website.
Let op dat je belangrijke tags, zoals {ACTIVATE} in activatie-e-mails, niet verwijdert. Anders kunnen gebruikers mogelijk hun account niet activeren.
Ja. Voor iedere mailtemplate kun je verschillende taalversies maken, bijvoorbeeld:
- nl-NL
- en-GB
- es-ES
- de-DE
Wanneer Joomla een e-mail verstuurt, probeert het eerst een template te vinden in de taal van de gebruiker. Bestaat die niet, dan gebruikt Joomla automatisch de standaardtemplate.
Zo kun je registratie-, activatie- en wachtwoordreset-e-mails versturen in de voorkeurstaal van je bezoekers.
Ja. Joomla gebruikt een layoutbestand (mailtemplate.php) voor de HTML-opmaak van e-mails. Met een template override kun je de complete uitstraling aanpassen, inclusief branding, structuur, lettertypes en styling, zonder dat je wijzigingen verloren gaan bij een Joomla-update.


