Anarchitecture Bricks Docs

Repository documentation hub for packages, guides, and generated references.

@anarchitects/common-nest-mailer

Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.

Features

Installation

npm install @anarchitects/common-nest-mailer @nestjs-modules/mailer
# or
yarn add @anarchitects/common-nest-mailer @nestjs-modules/mailer

Entry points and exports

Environment Variables

MAILER_PROVIDER=node
MAILER_HOST=smtp.example.com
MAILER_PORT=587
MAILER_SECURE=false
MAILER_USER=user@example.com
MAILER_PASS=super-secret
MAILER_DEFAULT=noreply@example.com
MAILER_IGNORE_TLS=false
MAILER_TEMPLATE_DIR=templates

Configuration

Configure mailerConfig in ConfigModule.forRoot({ load: [mailerConfig] }) and then choose provider wiring with either:

Usage (Preferred)

Configure mail transport once at app root, then let domain mailer modules consume MailerService.

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { CommonMailerModule, mailerConfig } from '@anarchitects/common-nest-mailer';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [mailerConfig],
    }),
    CommonMailerModule.forRootFromConfig(),
    CommonMailerModule.forProviderFromConfig(),
  ],
})
export class AppModule {}

Explicit Provider Wiring

import { Module } from '@nestjs/common';
import { CommonMailerModule } from '@anarchitects/common-nest-mailer';

@Module({
  imports: [CommonMailerModule.forRoot({ provider: 'noop' })],
})
export class AppModule {}

Custom Transport Setup

import { Module } from '@nestjs/common';
import { CommonMailerModule } from '@anarchitects/common-nest-mailer';

@Module({
  imports: [
    CommonMailerModule.forRootAsync({
      useFactory: () => ({
        transport: { jsonTransport: true },
        defaults: { from: 'noreply@example.com' },
        template: { dir: 'templates' },
      }),
    }),
  ],
})
export class AppModule {}

Injecting Typed Config

import { Injectable } from '@nestjs/common';
import { InjectMailerConfig, MailerConfig } from '@anarchitects/common-nest-mailer';

@Injectable()
export class MailerSetupService {
  constructor(@InjectMailerConfig() private readonly config: MailerConfig) {}
}

Development notes

License

Released under the Apache License 2.0.

Source Links