es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nodemailer no está enviando correos electrónicos en NestJs

Tengo la siguiente configuración para el paquete nodemailer:

// Módulo de la aplicación
@Module({
  imports: [
    MailerModule.forRoot({
      transport: {
        host: 'localhost',
        port: 3000,
        secure: false,
      },
      defaults: {
        from: '"nest-modules" <modules@nestjs.com>',
      },
      template: {
        dir: __dirname + '/templates',
        adapter: new HandlebarsAdapter(),
        options: {
          strict: true,
        },
      },
    }),
   ...
})
export class AppModule {}

Y

// Servicio de correo electrónico
export class EmailService {
  constructor(private readonly mailerService: MailerService) {}

  public example(): void {
    this.mailerService
      .sendMail({
        to: 'email@gmail.com', // lista de destinatarios
        from: 'test@nestjs.com', // dirección del remitente
        subject: 'Testing Nest MailerModule ✔', // línea de asunto
        text: 'welcome', // cuerpo del mensaje en texto plano
        html: '<b>welcome</b>', // contenido del cuerpo del mensaje en HTML
      })
      .then((r) => {
        console.log(r, 'email is sent');
      })
      .catch((e) => {
        console.log(e, 'error sending email');
      });
  }
}

Estoy utilizando mi entorno local. Al probar el código anterior, obtengo un error en el bloque catch: Error: Greeting never received. ¿Por qué obtengo ese error y cómo puedo enviar el correo electrónico sin ningún problema?/modules@nestjs.com

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el servidor SMTP local no está configurado correctamente o no está en funcionamiento. El error “Greeting never received” indica que nodemailer no pudo conectarse al servidor SMTP.

    Para enviar el correo electrónico sin problemas, debes asegurarte de tener un servidor SMTP correctamente configurado y en funcionamiento localmente, o utilizar un servicio SMTP de terceros como Gmail o Sendgrid. También debes asegurarte de que la configuración SMTP en MailerModule.forRoot esté correctamente establecida con el host, puerto y configuración correctos para el servicio SMTP específico que estés utilizando.

    Si no puedes ejecutar un servidor SMTP local, puedes intentar utilizar un servicio de pruebas como Mailtrap para probar la funcionalidad de envío de correo electrónico. Mailtrap proporciona un servidor SMTP falso que puedes utilizar con fines de prueba y depuración.

    Una vez que tengas un servicio SMTP o un servicio de pruebas correctamente configurado, puedes modificar los campos to, from, subject, text y html en la función sendMail de EmailService según tus requisitos y llamar a la función example() para enviar el correo electrónico sin problemas.

Comments are closed.