{% raw %} Met nodum wordt het opmaken en versturen van een e-mail heel gemakkelijk. Door het gebruik van een template, het object mail en een geldige API-key voor bijvoorbeeld Mailgun, Mandrill of SendGrid is het al mogelijk om volledig geautomatiseerd e-mails te versturen.

Om te mailen heb je een eigen, geldige API-key van bijvoorbeeld Mailgun of Mandrill of SendGrid nodig!

Het is in nodum mogelijk om een andere e-mailprovider te gebruiken. Let wel op dat alleen e-mail service-providers (zoals Mandrill, Mailgun of SendGrid) ondersteund worden. Verwar deze niet met een e-mail client-provider zoals Gmail, Yahoo of Hotmail.

Voor het versturen van een e-mail binnen nodum is er enkel een template nodig. Dit template dient in de map E-mail te staan. In dit template (bijvoorbeeld 'welkomste-mail.twig' genaamd) zet je de standaard HTML, CSS en Twig-code waaruit de e-mail moet bestaan. Het is in het template mogelijk om variabelen te gebruiken om de mails te personaliseren. Een welkomstmail zou er als volgt uit kunnen zien:

Beste {{ naam }},

Dank voor het inschrijven op {{ website }}! Je bent nu ingeschreven en zal {{ aantal }} keer per maand een nieuwsbrief ontvangen!

Groeten,
{{ afzender }}

De variabelen {{ naam }}, {{ website }}, {{ aantal }} en {{ afzender }} zijn vrij in te vullen wanneer de mail verstuurd wordt. Overal in het project is dit mailtemplate nu aan te roepen met het object mail. Met de methode mail.send kan de e-mail verstuurd worden:
mail.send( string toMailAddr, string toName, string subject, string templateName, array mergeVars, mixed attachments)
Alle argumenten in deze methode zijn verplicht, op de mergeVars en bijlagen na. Het template wordt gehaald uit de map E-mail en moet bestaan om de mail te kunnen versturen. Het is in een template alleen mogelijk om inline CSS te gebruiken door in de pagina de <style></style>-tags toe te voegen. De bijlagen dienen, indien opgegeven, van het type fileObject te zijn. Hierdoor hebben ze een 'name'- en 'data'-key.

De global variabele baselocation werkt niet standaard in de e-mail. Hiervoor is een extra handeling in de Algemene Instellingen van het project nodig. Vanaf versie 2.0.7 is onder het kopje [general] de waarde baselocation-fb toe te voegen. Dit is de fallback voor de variabele https://documentatie.nodum.io/.

[naam: 'nodum', website: 'nodum.io', aantal: '2', afzender: 'nodum-medewerker'] Nu kun je overal in je project, in elke map en in elk tabblad de e-mailfunctie aanroepen en een mailtje versturen, dit doe je door {% set email = mail.set en vervolgens de verschillende variabele waardes. Handig hiervoor is de auto-complete te gebruiken. Typ {% set email = ma, en de autosuggest geeft al mail.set als optie aan. Als je daar op klikt, krijg je vervolgens een lange regel waarin je de eigenschappen van de mail moet invullen.


Dit zijn:

  1. toMailAddr Vul als eerste het e-mailadres in waar je de e-mail heen stuurt.
  2. toName Vul de naam van de persoon in aan wie je het mailtje stuurt.
  3. Subject Vul het onderwerp van e-mail in.
  4. templateName Vul hier de naam van je e-mailtemplate in, zodat je als je verschillende standaardmailtjes hebt, je het juiste mail template aanroept. Hiervoor moet je een bestand (=tabblad) hebben aangemaakt in de map E-mail. Er wordt voor templateName gekeken in blocks/_email/{{ templateName }}.twig, dit template moet al wel bestaan om de mail te kunnen versturen.
  5. mergeVars Vul hier de verschillende variabele waardes in. Je doet dit door:
    { naam die je tussen de {{ }} hebt staan in je standaard e-mail : ‘ variabele die je wilt invullen tussen aanhalingstekens ’}
    {% set email = mail.set( 'pvo@ipublications.net', 'Jan Klaassen', 'Kebab', 'testmail', { naam : 'Jan Klaassen', hoeveelheid : 3, ding : 'die kebab van gister', afzender : 'iVan iPub' } %}

    Open de pagina waarin je het bovenstaande hebt gezet en zie hier: een e-mail!


Mail met bijlage
Wil je mail versturen met een bijlage dan kan dat ook. Je plaatst een bijlage als nummer 6 in de regel. Je krijgt dan de volgende regel:

mail.set( string toMailAddr , string toName , string subject , string templateName [ , array mergeVars ] [ , array attachments ] )
Om nodum uit te leggen om welke bijlage het gaat maak je eerst een {% set naam = commando aan. De attachments dienen, van het type fileObject te zijn; met een name en data key. Een voorbeeld hiervan zie je hieronder:

{% set pdf1 = api.PDF_generate('test', 'generated.pdf') %}
{% set pdf2 = api.PDF_generate('Hoi! Werkt het?', 'generated-inline.pdf') %}

{% do mail.send(

  1. 'jla@ipublications.nl',
  2. 'Jan Klaassen',
  3. 'Kebab',
  4. 'testmail',
  5. { naam : 'Jan Klaassen', hoeveelheid : 3, ding : 'die kebab van gister', afzender : 'iVan iPub' }
  6. [ pdf1, pdf2 ]
    ) %}

{% endraw %}