Estoy tratando de enviar un correo electrónico de bienvenida al usuario cuando crea una cuenta en mi aplicación. Estoy usando nodemailer y mailtrap para ver mis correos electrónicos. Pero me sale el error...
{ "status": "error", "error": { "code": "ETIMEDOUT", "command": "CONN", "statusCode": 500, "status": "error" }, "message": "Connection timeout", "stack": "Error: Connection timeout\n at SMTPConnection._formatError (/home/adiln22/Desktop/after-section-12/node_modules/nodemailer/libMi clase de correo electrónico se ve así
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)' ); } };Y desde aquí estoy enviando el correo electrónico.
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); });Ahora, lo que he intentado.
Se actualizó el nodemailer. Usé diferentes puertos proporcionados por la trampa de correo, usé POP3 en lugar de SMTP (obtuve el mismo error de SMTP)
No estoy usando Gmail que Gmail lo bloquearía.
Entonces vine a ti. Por favor ayuda.