Ошибка: Время ожидания соединенияn при подключении SMTPConnection._информатеррор

#javascript #node.js #api #backend #nodemailer

Вопрос:

Я пытаюсь отправить приветственное электронное письмо пользователю, когда он создает учетную запись в моем приложении. Я использую nodemailer и mailtrap, чтобы просматривать свои электронные письма. Но я получаю ошибку…

 {
    "status": "error",
    "error": {
        "code": "ETIMEDOUT",
        "command": "CONN",
        "statusCode": 500,
        "status": "error"
    },
    "message": "Connection timeout",
    "stack": "Error: Connection timeoutn    at SMTPConnection._formatError (/home/adiln22/Desktop/after-section-12/node_modules/nodemailer/lib
 

Мой класс электронной почты выглядит так

 const nodemailer = require('nodemailer');
const pug = require('pug');
const htmlToText = require('html-to-text');

module.exports = class Email {
  constructor(user, url) {
    this.to = user.email;
    this.firstName = user.name.split(' ')[0];
    this.url = url;
    this.from = `Adil Nehal <${process.env.EMAIL_FROM}>`;
  }

  newTransport() {
    
    return nodemailer.createTransport({
      host: process.env.EMAIL_HOST,
      port: process.env.EMAIL_PORT,
      auth: {
        user: process.env.ADMIN_EMAIL,
        pass: process.env.ADMIN_PASSWORD
      }
    });
  }

  // Send the actual email
  async send(template, subject) {
    // 1) Render HTML based on a pug template
    const html = pug.renderFile(`${__dirname}/../views/emails/${template}.pug`, {
      firstName: this.firstName,
      url: this.url,
      subject
    });

    // 2) Define email options
    const mailOptions = {
      from: this.from,
      to: this.to,
      subject,
      html,
      text: htmlToText.fromString(html)
    };

    // 3) Create a transport and send email
    await this.newTransport().sendMail(mailOptions);
  }

  async sendWelcome() {
    await this.send('welcome', 'Welcome to the Natours Family!');
  }

  async sendPasswordReset() {
    await this.send(
      'passwordReset',
      'Your password reset token (valid for only 10 minutes)'
    );
  }
};
 

И отсюда я отправляю электронное письмо.

 const Email = require('./../utils/email');
exports.signup = catchAsync(async (req, res, next) => {
  const newUser = await User.create({
    name: req.body.name,
    email: req.body.email,
    password: req.body.password,
    passwordConfirm: req.body.passwordConfirm
  });

//This is the main thing
  const url = `${req.protocol}://${req.get('host')}/me`;
  console.log(url);
  await new Email(newUser, url).sendWelcome();

//leave it
  createSendToken(newUser, 201, res);
});
 

Теперь о том, что я пробовал.

Обновил отправитель узлов. Использовал разные порты, предоставленные почтовой ловушкой, использовал POP3 вместо SMTP(получал ту же ошибку SMTP)

Я не использую Gmail, чтобы Gmail заблокировал его.

Потом я пришел к тебе. Пожалуйста, помогите.

Комментарии:

1. Я также попытался вручную протестировать SMTP-сервер с помощью telnet. Но попробуйте только с несколькими IP-адресами, а затем скажите telnet: Не удается подключиться к удаленному хосту: Время ожидания подключения истекло.