Прежде чем мы начнем…

GitHub: Ознакомьтесь с полным кодом здесь

Давайте посмотрим на инструменты, которые мы собираемся использовать:

NodeJS: мы собираемся использовать это для запуска кода JavaScript на сервере. На момент написания я решил использовать последнюю версию Node, v12.16.3.

Express:. Согласно их веб-сайту, Express - это быстрый, неповторимый, минималистичный веб-фреймворк для Node.js.

Nodemailer: Nodemailer - это единый модуль с нулевыми зависимостями для Node.js, предназначенный для отправки электронных писем.

Postman: приложение Chrome, которое мы будем использовать для практического тестирования нашего API.

Давайте начнем!

Предполагая, что вы уже установили Node.js, создайте каталог nodemailerDemo для хранения вашего приложения и сделайте его своим рабочим каталогом.

Давайте выполним npm init перед установкой наших пакетов!

$ npm init

Экспресс установка:

Установите Express и некоторые его зависимости

$ npm install -save express body-parser .

давайте установим nodemailer.

npm install nodemailer

Затем откройте ваш package.json файл и создайте команду для запуска сервера. Эта команда будет создана в разделе scripts. Отредактируйте свой package.json в разделе scripts следующим образом:

"scripts": {   
       "start": "node ./index.js",
       "test": "echo \"Error: no test specified\" && exit 1"
  }

Давайте создадим наш сервер

Добавьте это в свой файл index.js.

const express = require("express");
const bodyParser = require('body-parser');
const nodemailer = require('nodemailer');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
const route = express.Router();
const port = process.env.PORT || 5000;
app.use('/v1', route);
app.listen(port, () => {
    console.log(`Server listening on port ${port}`);
});

Теперь запустите приложение с помощью приведенной ниже команды.

$ npm start

Наш сервер стартовал на порту 5000.

Далее В файле index.js требуется nodemailer

var nodemailer = require('nodemailer');

nodemailer нуждается в транспортной службе, с помощью которой он может отправлять электронные письма. В этом примере я использую Gmail.

внутри вашего файла node.js напишите

// create reusable transporter object using the default SMTP transport
const transporter = nodemailer.createTransport({
port: 465,               // true for 465, false for other ports
host: "smtp.gmail.com",
   auth: {
        user: '[email protected]',
        pass: 'password',
     },
secure: true,
});

Теперь нам нужен второй объект конфигурации, в котором мы будем настраивать детали нашей электронной почты.

const mailData = {
from: '[email protected]',  // sender address
  to: '[email protected]',   // list of receivers
  subject: 'Sending Email using Node.js',
  text: 'That was easy!'
  html: '<b>Hey there! </b>
         <br> This is our first message sent with Nodemailer<br/>',
};

Вложения в Nodemailer

Мы можем добавлять вложения в Nodemailer, используя следующие основные свойства:

// An array of attachments
        attachments: [
            {
                filename: 'text notes.txt',
                path: 'notes.txt
            },
         ]

Теперь последний бит на самом деле отправляет электронное письмо, мы можем сделать это с помощью метода sendMail, предоставленного созданным нами выше объектом транспортера.

transporter.sendMail(mailOptions, function (err, info) {
   if(err)
     console.log(err)
   else
     console.log(info);
});

sendMail принимает два аргумента mailOptions и функцию обратного вызова, которая будет вызываться при отправке почты. Функция обратного вызова будет вызываться, когда какое-либо электронное письмо успешно отправлено, если произошла ошибка.

Перед отправкой электронной почты с помощью Gmail вы должны разрешить незащищенным приложениям доступ к Gmail. Это можно сделать, перейдя в настройки Gmail здесь.

Вот как мы отправляем электронные письма в node js с помощью nodemailer и Gmail.

Примеры Nodemailer

Давайте рассмотрим и протестируем полное сообщение, созданное с помощью Nodemailer.

Пример 1. Сначала отправьте текстовое сообщение с помощью почтальона. Теперь мы отправляем текст в теме письма почтальону по запросу.

Мы только что успешно отправили текстовое письмо.

Пример 2. Отправить текстовое сообщение с прикрепленными изображениями и текстовыми файлами

Мы только что успешно отправили письмо с прикрепленными изображениями и текстовыми файлами.

ВЫВОД

Мы только что успешно отправили почту с помощью noedemailer и express.js в нашем приложении.
Если вы дошли до этого момента, поздравляю, ✌.
Конечно, у вас есть вопросы или проблемы, когда вы проходили через это руководство, пожалуйста, оставьте ваши комментарии, и вам ответят как можно скорее.
Еще раз спасибо за чтение, Хлопайте и поделитесь! 👌

GitHub: Ознакомьтесь с полным кодом здесь