Nodemailer - Juliusmeeuwisse/blok-tech-crocmeisters GitHub Wiki

Nodemailer

Als feature ben ik voor Nodemailer gegaan. Nodemailer is een Node.js application die er voor zorgt dat je makkelijk emails kan versturen. In eerste instantie wilde ik er voor zorgen dat er een email verstuurt werd naar ons als developers op het moment dat er een match zou plaatsvinden. Dit heb ik later aangepast, nu krijgt de gebruiker een email op het moment dat die zich aanmeld. Wij als developers staan in de cc zodat wij ook weten wanneer er een nieuwe gebruiker is van MMM.

Gmail

Ik heb er voor gekozen om met gmail te werken. Dit is een minder veilige optie maar het werkt wel meteen. Dit is voor ons handig omdat de gebruiker gewoon de mail binnen krijgt (en wij ook). Als wij later bijvoorbeeld een eigen email zouden hebben dus die zou runnen op een VPS dan zou dit een veel betere optie zijn. Voor nu is gmail een prima oplossing, zeker omdat dit voornamelijk gaat om het testen van het concept.

Toegang door minder goed beveiligde apps

In de instellingen van het google account waar de email door verzonden word moet er een setting aangezet worden, anders dan heeft de applicatie geen toegang tot het account en zal de email dus niet verzonden worden.

.env

Het is natuurlijk mogelijk om het email adres en het wachtwoord waar je de email mee gaat versturen gewoon in je code te zetten. Dat zou prima werken, alleen kan dan wel iedereen het wachtwoord zien van jouw email adres en daarom wil je dit niet doen. Hier heb ik dus gebruik gemaakt van de .env, ik dit bestand staat nu het mailadres en het bijpassende wachtwoord. Omdat de .env in onze gitignore staat zal deze niet mee gepushed worden naar GitHub en is het wachtwoord op deze manier dus niet zichtbaar voor gebruikers of voor gebruikers van GitHub die ons project willen clonen.

Utils mapje

In onze code heb ik const sendEmail gemaakt. Deze staat in een los JS file, dit heb ik gedaan omdat het op deze manier veel makkelijker is om ook op een andere plek binnen onze applicatie een mail te versturen met Nodemailer. Je hoeft dan namelijk alleen de const sendEmail op te halen en aan te geven van en naar welke email adressen je de mail wilt sturen en dan ben je al bijna klaar om te gaan.

Dit is dan de code die in het losse JS file staan. In dit bestand require ik natuurlijk ook nog Nodemailer en ik export de sendEmail. Dit export ik natuurlijk zodat ik deze in de file waar ik hem nodig heb kan gebruiken alsof hij in datzelfde bestand staat.

const sendEmail = mailOptions => {
  const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: process.env.EMAIL,
      pass: process.env.EMAIL_PASSWORD
    }
  })

  transporter.sendMail(mailOptions, err => err && console.error(err))
}

Templating literals

Bij de text die in de email komt te staan heb ik gebruik gemaakt van templating literals Dit was voor mij fijn om te gebruiken omdat ik op deze manier makkelijk de data kon ophalen en zo in een 'string' die weer neer te zetten zonder dat dit extra moeite kost. als je binnen je templating literals namelijk ` ${name} zou doen dan haalt hij de naam van de gebruiker op. Hier onder zie je ook hoe ik dat in mijn code heb gedaan.

text: `
Hey! ${profile.name} 

Thank you for joining MyMusicMatch
We are super excited to have you on board!
`

Bronnen