Lab / Node JS

Как отправлять email сообщения из NodeJS при помощи Gmail

Отправка почтовых уведомлений с сайтов и веб приложений это мой персональный ад. Сегодня я поделюсь простым способом как немного облегчить эту задачу в ваших веб приложениях.

В этой заметке я поделюсь простым методом как можно отправлять email уведомления из NodeJS с помощью библиотеки node-mailer и вашего аккаунта gmail.

Предварительная настройка gmail аккаунта

Для начала вам понадобится немного настроить ваш Gmail аккаунт, так как по умолчанию он будет блокировать отправку сообщений через свои smtp сервера. Для начала зайдите в настройки аккаунта, найдите вкладку «Less secure app» и разрешите доступ к вашему аккаунту. myaccount.google.com/lesssecureapps

Установка библиотеки Node-Mailer

Библиотека доступна, как через npm так и через yarn. Я предпочитаю npm как наиболее популярный

npm i nodemailer

Настройка Node-Mailer

Давайте настроим библиотеку работы с почтой, так что бы она использовала smtp сервера Gmail.

const nodemailer = require("nodemailer");

module.exports = {
    sendMail: function () {
        let mailTransporter = nodemailer.createTransport({
            service: "gmail",
            auth: {
                user:"yourEmail@gmail.com",
                pass: "yourPassword",
            },
        });
    },
};

Создаём объект письма

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

let mailDetails = {
    from: "yourEmail@gmail.com",
    to: "receiverEmail@anyDomain.com",
    subject: "Test email from node JS",
    text: "Hey! This email has been sent from Node JS",
};

Отправка сообщения

Теперь нам осталось всего лишь передать объект нашего письма со всеми полями в метод отправки Надей библиотеки Node Mailer

mailTransporter.sendMail(mailDetails, function (err, data) {
    if (err) {
        console.log("Error Occurs: " + err);
    } else {
        console.log("Email sent successfully: " + data);
    }
});

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

При помощи Node Mailer можно, так же легко подключить какой нибудь «взрослый» сервис для отправки почтовых уведомлений, например Mailgun или Sendinblue, и даже Yandex.Mail но со своими оговорками. Новые аккаунты Яндекса часто блокируют отправку сообщений подобным образом. Для начала нужно немного «прогреть» аккаунт и обязательно подтвердить номер телефона