Прежде чем мы начнем…
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: Ознакомьтесь с полным кодом здесь