Skip to content

Instantly share code, notes, and snippets.

@mikoloism
Forked from jonathandavidpollock/nodemailer.js
Last active June 4, 2021 14:09
Show Gist options
  • Save mikoloism/91f00ec8cfedda5d6c70b53a1eb112c1 to your computer and use it in GitHub Desktop.
Save mikoloism/91f00ec8cfedda5d6c70b53a1eb112c1 to your computer and use it in GitHub Desktop.
how use nodemailer (checklist)

nodemailer checklist

Install

npm install nodemailer

Coding

ES6 (babel)

import nodemailer from 'nodemailer';
import MailConfigFile from './mail-config.json';

const mailconfig = JSON.parse(MailConfigFile);

const mailSend = ({ to: mail_to, subject: mail_subject, html: mail_subject }) => {
  nodemailer.createTestAccount((err, account) => {

    // create reusable transporter object using the default SMTP transport
    let transporter = nodemailer.createTransport(mailconfig);

    // setup email data with unicode symbols
    let opitons = {
      from: '{SENDER_GMAIL_USERNAME}@gmail.com',
      to: mail_to, // can be array
      subject: mail_subject, // one line subject
      html: mail_html // mail body as html
    };
    
    // send mail with defined transport object
    transporter.sendMail(options, (error, info) => {
      error ? console.error(`[NODEMAILER]<ERROR> : `, error) : console.log(`[NODEMAILER]<INFO> : `, info)
    });
  })
};

export defualt mailSend;

ES5

const nodemailer = require('nodemailer');
const MailConfigFile = require('./mail-config.json');

const mailconfig = JSON.parse(MailConfigFile);

const mailSend = ({ to: mail_to, subject: mail_subject, html: mail_subject }) => {
  nodemailer.createTestAccount((err, account) => {

    // create reusable transporter object using the default SMTP transport
    let transporter = nodemailer.createTransport(mailconfig.setup);

    // setup email data with unicode symbols
    let opitons = {
      from: '{SENDER_GMAIL_USERNAME}@gmail.com',
      to: mail_to, // can be array
      subject: mail_subject, // one line subject
      html: mail_html // mail body as html
    };
    
    // send mail with defined transport object
    transporter.sendMail(options, (error, info) => {
      error ? console.error(`[NODEMAILER]<ERROR> : `, error) : console.log(`[NODEMAILER]<INFO> : `, info)
    });
  })
};

module.exports = mailSend;

mail-config.json

{
  "host": "smtp.gmail.com",
  "port": 587, // 465 is secure
  "secure": false, // true for 465, false for other ports
  "auth": {
    "user": "ACCOUNT_USERNAME", 
    "pass": "ACCOUNT_PASSWORD"
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment