Skip to main content

Health Check

Monitor mailer health using @nestjs/terminus.

Setup

Install terminus:

pnpm add @nestjs/terminus

Usage

Inject MailerHealthIndicator in your health controller:

import { Controller, Get } from '@nestjs/common';
import { HealthCheck, HealthCheckService } from '@nestjs/terminus';
import { MailerHealthIndicator } from '@nestjs-modules/mailer';

@Controller('health')
export class HealthController {
constructor(
private health: HealthCheckService,
private mailerHealth: MailerHealthIndicator,
) {}

@Get()
@HealthCheck()
check() {
return this.health.check([
() => this.mailerHealth.isHealthy('mailer'),
]);
}
}

Response

{
"status": "ok",
"info": {
"mailer": {
"status": "up",
"transporters": "up"
}
}
}

With Queue

If MailerQueueModule is imported, the health check also reports queue metrics:

{
"status": "ok",
"info": {
"mailer": {
"status": "up",
"transporters": "up",
"queue": {
"status": "up",
"waiting": 3,
"active": 1,
"completed": 245,
"failed": 2,
"delayed": 0
}
}
}
}

Custom Health Key

// Use a custom key for the health response
await this.mailerHealth.isHealthy('email-service');
tip

MailerHealthIndicator is automatically available when you import MailerModule. No additional configuration needed. It uses the existing verifyAllTransporters() method to check SMTP connectivity.