node.js Отправка письма

298
30 декабря 2018, 10:30

С помощью node.js нужно из формы вытягивать данные и отправлять на почту. Сервер реализован на express. Данные получаю без проблем. Для отправки данных на почту использую пакет nodemailer.

Проблема в отправке - письмо не отправляется. Выдает ошибку следующего содержания:

{ Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more
 at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials z13sm16002309wrw.19
 - gsmtp
    at SMTPConnection._formatError (C:\Users\Sergey\Desktop\Project-Portfolio\no
de_modules\nodemailer\lib\smtp-connection\index.js:555:19)
    at SMTPConnection._actionAUTHComplete (C:\Users\Sergey\Desktop\Project-Portf
olio\node_modules\nodemailer\lib\smtp-connection\index.js:1244:34)
    at SMTPConnection._responseActions.push.str (C:\Users\Sergey\Desktop\Project
-Portfolio\node_modules\nodemailer\lib\smtp-connection\index.js:338:26)
    at SMTPConnection._processResponse (C:\Users\Sergey\Desktop\Project-Portfoli
o\node_modules\nodemailer\lib\smtp-connection\index.js:702:20)
    at SMTPConnection._onData (C:\Users\Sergey\Desktop\Project-Portfolio\node_mo
dules\nodemailer\lib\smtp-connection\index.js:507:14)
    at TLSSocket._socket.on.chunk (C:\Users\Sergey\Desktop\Project-Portfolio\nod
e_modules\nodemailer\lib\smtp-connection\index.js:459:47)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
  code: 'EAUTH',
  response: '535-5.7.8 Username and Password not accepted. Learn more at\n535 5.
7.8  https://support.google.com/mail/?p=BadCredentials z13sm16002309wrw.19 - gsm
tp',
  responseCode: 535,
  command: 'AUTH PLAIN' }

Показываю свою реализацию отправки.

Файл config.json. Как я понимаю в поле user нужно указать реальный email, а в поле pass нужно указать пароль от этой почты. Вообщем это я и сделал. Здесь же я конечно заменил.

{
    "upload": "public/upload",
    "mail": {
        "subject": "Сообщение с сайта",
        "smtp": {
            "host": "smtp.gmail.com",
            "post": 465,
            "secure": true,
            "auth": {
                "user": "user",
                "pass": "pass"
            }
        }
    }
}

Файл роута (смотрим на post запрос):

const express = require("express");
const router = express.Router();
const nodemailer = require("nodemailer");
const config = require("../config.json");
router.get("/", (req, res) => {
    let obj = {
        title: "Mail"
    };
    res.render("./pages/works", obj);
});
//===== отправка письма на почту =====
router.post("/", (req, res) => {
    //требуем наличия имени, обратной почты и текста
    if(!req.body.name || !req.body.email || !req.body.text) {
        //если что-либо не указано - сообщить об этом
        return res.json({status: "Укажите данные!"});
    }
//    инициализирум модуль для отправки писем и указываем данные из конфига
    let transporter = nodemailer.createTransport(config.mail.smtp);
    let mailOptions = {
        from: `"${req.body.name}" <${req.body.email}>`,
        to: config.mail.smtp.auth.user,
        subject: config.mail.subject,
        text: req.body.text.trim().slice(0, 500) + `\n Отправлено с: <${req.body.email}>`
    };
    //отправляем почту
    transporter.sendMail(mailOptions, (error, info) => {
        //если есть ошибки при отправке - сообщаем об этом
        if (error) {
            console.log(error);
            return res.json({status: "При отправке письма произошла ошибка"});
        }
        res.json({status: "Письмо успешно отправлено"});
    })
});
module.exports = router;

Вообщем очень нужна помощь в решении этой проблемы. Заранее спасибо!

READ ALSO
Нестандартное условие в MYSQL

Нестандартное условие в MYSQL

Есть таблица с полями: gorod, category

142
CHtmlEditCtrl режим просмотра

CHtmlEditCtrl режим просмотра

Всем доброго времени сутокНеобходимо установить html страницу на просмотр, без редактирования

162
UI-select в табличной строке

UI-select в табличной строке

Имеется следующая DOM-структура: modalDiv (модальное окно) -> ui-grid -> ui-selectВ модальном окне находится грид, в колонке которого располагается ui-select

186