@webtre/nestjs-mailer-react-adapter
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

Nest Logo

📨 Build and send emails in Nest framework using React.js

NPM Version Package License NPM Downloads

Features

  • ⚡️ Write your email templates in React and TypeScript

  • ⛔ No more template not found / sending blank emails.

  • ⛔ No more missing context / variables from template.

  • 🦾 Write testable templates intended for email clients.

  • 💌 Built on top of react-email — the next generation of writing emails.

Installation

This library is an adapter for the @nestjs-modules/mailer module, so we'll install the dependencies alongside by running the command below.

npm i @webtre/nestjs-mailer-react-adapter @nestjs-modules/mailer nodemailer

Getting Started

To add support for React to your project, modify tsconfig.json

{
  "compilerOptions": {
    // add this line
    "jsx": "react-jsx"
  }
}

Configuration

// src/app.module.ts
import { Module } from "@nestjs/common";
import { MailerModule } from "@nestjs-modules/mailer";
import { ReactAdapter } from "@webtre/nestjs-mailer-react-adapter";

@Module({
  imports: [
    MailerModule.forRoot({
      transport: {
        host: "smtp.domain.com",
        port: 2525,
        secure: false,
        auth: {
          user: "user@domain.com",
          pass: "password",
        },
      },
      defaults: {
        from: '"Webtre Technologies" <hello@domain.com>',
      },
      template: {
        dir: __dirname + "/templates",
        // Use the adapter
        adapter: new ReactAdapter(),

        // Or with optional config
        adapter: new ReactAdapter({
          pretty: false,
          plainText: true,
        }),
      },
    }),
  ],
})
export class AppModule {}

Service Provider

import { Injectable } from '@nestjs/common';
import { MailerService } from '@nestjs-modules/mailer';

@Injectable()
export class ExampleService {
  constructor(private readonly mailerService: MailerService) {}

  async public example(): void {
    await this.mailerService
      .sendMail({
        to: 'john@domain.com',
        subject: 'Testing react template',
        template: 'welcome', // The compiled extension is appended automatically.
        context: { // Data to be passed as props to your template.
          code: '123456',
          name: 'John Doe',
        },
      });
  }
}

React Template

// src/templates/welcome.tsx
interface Props {
  code: string;
  name: string;
}

export default function Welcome({ name, code }: Props) {
  return (
    <div>
      Hi {name}, thanks for signing up. Your code is {code}
    </div>
  );
}

Credits

License

MIT License © 2022 Webtre Technologies

Package Sidebar

Install

npm i @webtre/nestjs-mailer-react-adapter

Weekly Downloads

464

Version

0.1.2

License

MIT

Unpacked Size

12.9 kB

Total Files

7

Last publish

Collaborators

  • kodjunkie