noder_ss
@noder_ss
Линуксоид-энтузиаст и SQL разработчик

Почему не работает nodemailer?

Почему не работает отправка на мыло через nodemailer? Код тут.
Пишет эту ошибку:
63fb98a5c10d6735664436.png
  • Вопрос задан
  • 340 просмотров
Решения вопроса 2
vool
@vool
Разработчик
Можно ещё таким способом отправлять:
(Пример отправки кода подтверждения)
const nodemailer = require('nodemailer');
const directTransport = require('nodemailer-direct-transport');
const fromHost = `mysite.com`;
const from = 'site' + '@' + "gmail.com";

console.log('Email will be sent from:');
console.log(from, '\n');

// Ask for email address
const to = prompt('Enter your email address ').trim();

// Генерируем код
const trueVerificationCode = Math.round(Math.random() * (10e5 - 1)).toString();

const transport = nodemailer.createTransport(directTransport({
  name: fromHost
}));
let y = trueVerificationCode;
// Отправляем письмо
transport.sendMail({
  from, to,
  subject: 'Verify your email address',
  html: `
         <div style="width:100%;display:flex;flex-direction:column;justify-content:center;
         align-items:center;background:lightblue;padding:50px;box-sizing:border-box;">
         <h1>Verify your email address</h1>
         <p>Site has tried to verify your email address "${to}".
         If this wasn't you, ignore and delete this email. Otherwise, the verification code is bellow:</p>
         <div style="padding:50px;background:lightgray;border-radius:10px;font-size:30px;
         font-family:monospace;">${trueVerificationCode}</div></div>
        `
}, (err, data) => {
  if (err) {
    console.error('There was an error:', err);
  } else {
    console.log('\nVerification email sent, check your inbox\n');
    const userVerificationCode = prompt('Enter your verification code ');
    if (userVerificationCode == trueVerificationCode) {
      console.log('Email address verified');
    } else {
      console.log('Code incorrect');
    }
  }
});
Ответ написан
szQocks
@szQocks
Код по этой ссылке и не будет работать, код там не полный, это вершина айсберга, он возможно работал - раньше, сейчас если я не ошибаюсь то вся эта тема с nodemailer идёт через гугл, а в гугле куча мозготрёпки. Недавно я возился с этим nodemailer, пол дня ушло на то что бы настроить рассылку сообщение, могу лишь дать подсказку о том как делал я:

Я nodemailer юзал в связке с googleapis
Нужно как минимим регаться будет в гугле, создать там приложение для рассылки, связать 2 пакета nodemailer и googleapis на бэке, прокинуть в них нужны данные, например clientId - при создании приложения для рассылок - этот айдишник выдает приложение, так же где-то там взять client_secret и ещё возможно какие-то манипуляции о которых я даже и сам не помню, хотя недавно делал, в итоге должно быть что-то типа этого.

const nodemailer = require("nodemailer");
const { google } = require("googleapis");
const OAuth2 = google.auth.OAuth2;
const OAuth2_client = new OAuth2(clientId, client_secret);
OAuth2_client.setCredentials({ refresh_token: refresGoogleToken });


class MailService {
  static async sendActivationMail(to, activationLink) {
    const accessToken = await OAuth2_client.getAccessToken();

    const transporter = nodemailer.createTransport({
      service: "gmail",
      secure: false,
      auth: {
        type: "OAuth2",
        user: email,
        clientId: clientId,
        clientSecret: client_secret,
        refreshToken: refresGoogleToken,
        accessToken: accessToken, 
      },
      tls: {
        rejectUnauthorized: false,
      },
    });

    await transporter.sendMail({
      from: email,
      to,
     // и тут ниже остальная логика по созданию содержимого сообщения для почты, тут ничего ниже особенного нет
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы