# E-mails versturen met Apps Script via Gmail E-mails versturen met Apps Script via Gmail is een van de meest gebruikte automatiseringen in Google Workspace. Of je nu een bevestigingsmail stuurt na een formulierinzending of een wekelijks rapport rondstuurt, met een paar regels code regel je het. In dit artikel leer je losse mails, opgemaakte HTML-mails en gepersonaliseerde bulkmails versturen, en hoe je netjes binnen de quota blijft. [[TOC]] ## Een eenvoudige mail versturen De snelste manier om een mail te sturen is `GmailApp.sendEmail()`. Je geeft drie dingen mee: het ontvangeradres, het onderwerp en de platte tekst. ```javascript function stuurSimpeleMail() { GmailApp.sendEmail( 'collega@cloud-captains.com', 'Maandrapport staat klaar', 'Hoi, het maandrapport is gegenereerd en staat in de gedeelde map.' ); } ``` Dit verstuurt direct vanaf jouw eigen Gmail-adres. De ontvanger ziet dus jouw naam als afzender. De eerste keer dat je de functie draait, vraagt Apps Script om toestemming voor de Gmail-scope. Die machtiging hoort bij het script, niet bij de ontvanger. :::info title="GmailApp versus MailApp" Er bestaan twee services. `MailApp` kan alleen mails versturen en vraagt minder rechten. `GmailApp` kan ook mails lezen, labels beheren en concepten maken, en vraagt dus bredere scopes. Voor puur versturen volstaat `MailApp.sendEmail()`. De volledige referentie staat op developers.google.com/apps-script/reference/gmail. ::: ## HTML, cc en bijlagen toevoegen Wil je opmaak, een kopie naar iemand, of een bijlage, dan geef je een opties-object mee als vierde argument: ```javascript function stuurNetteMail() { const htmlBody = '
Beste collega,
' + 'Het rapport is klaar. Zie de bijlage.
'; const bestand = DriveApp.getFilesByName('rapport-mei.pdf').next(); GmailApp.sendEmail( 'team@cloud-captains.com', 'Maandrapport mei 2026', 'Je mailprogramma toont geen HTML. Open de bijlage voor het rapport.', { htmlBody: htmlBody, cc: 'manager@cloud-captains.com', attachments: [bestand.getAs(MimeType.PDF)], name: 'Rapportage Bot' } ); } ``` De gewone tekst (derde argument) blijft de fallback voor mailprogramma's zonder HTML. Het `name`-veld stelt de getoonde afzendernaam in. Andere handige opties zijn `bcc`, `replyTo` en `from` (alleen voor een geverifieerd alias). :::tip title="Geef altijd een platte-tekst-fallback mee" Zet je HTML-mail altijd op met een leesbare platte-tekst-versie. Sommige clients en screenreaders tonen die platte tekst, en het verbetert de afleverbaarheid omdat spamfilters mails zonder tekstversie strenger beoordelen. ::: ## Een persoonlijke bulkmail (mailmerge) Een veelvoorkomende wens is een gepersonaliseerde mail naar een lijst ontvangers uit een spreadsheet. Je leest de rijen en stuurt per rij een mail: ```javascript function bulkMailUitSheet() { const blad = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Ontvangers'); const data = blad.getRange(2, 1, blad.getLastRow() - 1, 2).getValues(); data.forEach(function(rij) { const naam = rij[0]; const email = rij[1]; if (!email) return; const body = 'Beste ' + naam + ', Bedankt voor je inschrijving.'; MailApp.sendEmail(email, 'Bevestiging inschrijving', body); }); } ``` De rijen worden vanaf rij 2 gelezen, zodat de kopregel wordt overgeslagen. De eerste kolom bevat de naam, de tweede het e-mailadres. Rijen zonder adres slaan we over met `if (!email) return;`. :::warn title="Houd rekening met de dagelijkse limiet" Elk account heeft een dagelijkse verzendlimiet die het aantal ontvangers telt, niet het aantal mails. Een mail naar 10 adressen telt dus als 10 ontvangers. Voor Google Workspace-accounts is dat doorgaans 1500 ontvangers per dag, voor gratis Gmail 100 per dag (cijfers per juni 2026). Overschrijd je die, dan stopt het script met een fout en kun je die dag niets meer sturen. Controleer je resterende quota met `MailApp.getRemainingDailyQuota()` voordat je een grote batch start. ::: ## Quota bewaken Voordat je honderden mails verstuurt, is het verstandig de resterende quota te checken: ```javascript function checkQuota() { const over = MailApp.getRemainingDailyQuota(); Logger.log('Nog ' + over + ' ontvangers vandaag mogelijk.'); if (over < 50) { Logger.log('Te weinig quota, batch uitstellen.'); } } ``` `getRemainingDailyQuota()` geeft het aantal ontvangers terug dat je vandaag nog mag aanschrijven. Bouw deze check vooraan in je bulkscript in, zodat je niet halverwege een batch vastloopt. :::howto title="Veilig een bulkmail versturen" 1. Lees de ontvangers uit je spreadsheet met `getValues()`. 2. Controleer de resterende quota met `getRemainingDailyQuota()`. 3. Sla rijen zonder geldig e-mailadres over. 4. Stuur per ontvanger een gepersonaliseerde mail. 5. Markeer in een extra kolom dat de mail verstuurd is, zodat je bij een herstart niet dubbel verstuurt. ::: :::faq ### Vanaf welk adres wordt de mail verstuurd? Standaard vanaf het account waarmee het script draait. Met het `from`-veld kun je een geverifieerd alias kiezen dat in je Gmail-instellingen onder "Versturen als" staat. ### Hoeveel mails mag ik per dag versturen? Dat hangt van je abonnement af en wordt geteld in ontvangers, niet in losse mails. Betaalde Workspace-accounts mogen meestal 1500 ontvangers per dag, gratis Gmail 100. Check de actuele waarde met `getRemainingDailyQuota()`. ### Telt cc en bcc ook mee voor de limiet? Ja. Elk adres in to, cc en bcc telt als een aparte ontvanger voor de dagelijkse quota. ### Kan ik bijlagen meesturen? Ja, via het `attachments`-veld in het opties-object. Je geeft een array van blob-objecten mee, bijvoorbeeld een PDF uit Drive die je met `getAs(MimeType.PDF)` ophaalt. ### Hoe voorkom ik dubbele mails bij een herstart? Markeer per rij in de spreadsheet wanneer een mail verstuurd is en sla al gemarkeerde rijen over bij een volgende run. ### Wat is het verschil tussen MailApp en GmailApp? MailApp kan alleen versturen en vraagt minder rechten. GmailApp kan ook lezen, labelen en concepten maken, maar vraagt bredere toestemming. Voor enkel versturen kies je MailApp. ::: ## Volgende stappen Je kunt nu losse en bulkmails versturen, met opmaak en bijlagen. Combineer dit met een tijdgestuurde trigger om mails automatisch op vaste momenten te versturen, zie [[apps-script-tijdgestuurde-trigger|tijdgestuurde triggers instellen]]. Voor een complete rapportageflow lees je [[apps-script-dagelijks-rapport|een dagelijks e-mailrapport automatiseren]].