Posílání HTML e-mailů za pomoci Node.js a knihovny nodemailer

(8. 1. 2019) Jak snadno a efektivně posílat HTML e-maily pomocí Node.js a knihovny nodemailer

Při kódování HTML e-mailů zcela jistě potřebujeme otestovat šablony v poštovních klientech a zařízení. Pomoci nám mohou externí služby, které HTML e-mailu pošlou na vybraný e-mail nebo si jej můžeme poslat např. PHP funkcí mail().

Frontend developeři, kteří používají Node.js, mohou sáhnout po knihovně nodemailer. V článku si ukážeme instalaci knihovny a ukázkový příklad konfigurace.

Stažení a instalace balíčku

Ve své složce spustíme příkaz mkdir nodemailer && cd nodemailer && npm init. CLI nás vyzve k doplnění údají pro package.json.

Následně nainstalujeme knihovnu nodemailer příkazem npm install nodemailer --save.

Nyní přidáme do package.json do scripts příkaz:

"scripts": {
  "sendemail": "node sendemail.js"
 },

Konfigurace JavaScriptu

Nyní si vytvoříme soubor sendemail.js, jeho obsah bude:

var nodemailer = require('nodemailer')
var fs = require('fs')
var email = 'mail.html'
var transporter, mailOptions, mailSettings

fs.readFile(email, 'utf8', (err, data) => {

  mailOptions = {
    from: 'example@domain.tld', 
    to: 'my-email@domain.tld',   
    subject: 'E-mail subject',
    html: data
  }
    
  mailSettings = {
    host: 'smtp.gmail.com',
    port: 25,
    secure: false,
    auth: {
      user: 'example@domain.tld',
      pass: 'mypassword'
    }
  }

  transporter = nodemailer.createTransport(mailSettings).sendMail(mailOptions, (error, info) => {
    if (error) {
      console.log(error)
    } else {
      console.log('Email sent: ' + info.response)
    }
  })
})

V objektu mailOptions = {} definujeme odesílatele, příjemce, předmět a obsah HTML šablony mail.html (v tomto souboru se nachází nakódovaná šablona), a v objektu mailSettings = {} definujeme nastavení SMTP serveru.

Odeslání e-mailu

Na závěr spustíme příkaz příkaz npm run sendemail.

Tímto způsobem můžeme snadno a efektivně odesílat e-maily.

Volné pozice

O autorovi

Tomáš Smetka Frontend developer

V Pilulce mám na starosti frontend nového e-shopu www.pilulka.ro, který pohání Bootstrap 4 doplněný vlastními atomickými třídami, komponenty ve Vanilla JS & Vue.js a šablonovacím systémem Latte.

Používáme Webpack ve 4 verzi, Yarn, Stylelint, JSLint, SASS, Babel, ECMAScript 6.