This NestJS Package Turns Email Setup from Nightmare to No-Brainer

The Nestjs-mailer package is a modern tool for building dynamic email templates and sending emails effortlessly. It leverages the power of React and Nodemailer, making it a developer-friendly tool.


This content originally appeared on HackerNoon and was authored by Kamil Fronczak

Sending emails is a critical functionality in many applications, whether for user notifications, transactional updates, or marketing purposes.

\ However, implementing email solutions can sometimes be cumbersome, as you have to integrate mailer with template language, check for dependencies…

\ But!

\ With the @nestixis/nestjs-mailer package, you can simplify this process while ensuring flexibility and reliability.

\ This package leverages the power of React and Nodemailer, making it a modern and developer-friendly tool for building dynamic email templates and sending emails effortlessly.

\ Let's dive into how you can set it up and use it :)

Installing the Package

To get started, you need to install the nestjs-mailer package in your NestJS application. This package is available via npm, making installation quick and straightforward. Run the following command in your terminal: \n

npm install @nestixis/nestjs-mailer

Configuring the Module

Once the package is installed, the next step is to configure the MailerSdkModule in your application.

\ Configuration is straightforward, and for testing purposes, you can use a tool like Mailcatch to capture and preview emails without sending them to real users.

\ Here's an example of how to set it up: \n

import { MailerSdkModule } from '@nestixis/nestjs-mailer';
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    MailerSdkModule.register({
      auth: {
        user: 'username',
        password: 'password',
        host: 'sandbox-smtp.mailcatch.app',
        port: 2525,
        ssl: false,
      },
      from: 'your-email@example.com',
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

Creating an Email Template

To make your emails visually appealing and more dynamic, you can combine templates with React, and package@react-email/components, allows you to design such email templates.

\ **But before that, you should call the file invite-admin-with-account-template.tsx and set \n **

"jsx": "react" \n

in your tsconfig.json

\ Here's an example of a template for inviting a new admin user: \n

import {
  Body,
  Container,
  Head,
  Html,
  Img,
  Link,
  Section,
  Text,
} from '@react-email/components';
import * as React from 'react';

export default function InviteAdminWithAccountTemplate({
  translation,
  language,
  invitationHref,
  passwordHref,
  logoUrl,
}) {
  return (
    <Html lang={language}>
      <Head>
        <style>{/* Your custom styles here */}</style>
      </Head>
      <Body style={{ fontFamily: 'Arial, sans-serif' }}>
        <Section>
          <Container>
            {logoUrl ? (
              <Img src={logoUrl} alt="Logo" />
            ) : (
              <Text>{translation.titleInside}</Text>
            )}
            <Text>{translation.contentPart1}</Text>
            <Text>{translation.contentPart2}</Text>
            <Text>
              {translation.contentPart3.subpart1}
              <Link href={invitationHref}>
                {translation.contentPart3.subpart2}
              </Link>
              {translation.contentPart3.subpart3}
            </Text>
            <Text>
              {translation.contentPart4.subpart1}
              <Link href={passwordHref}>
                {translation.contentPart4.subpart2}
              </Link>
            </Text>
          </Container>
        </Section>
      </Body>
    </Html>
  );
}

Injecting the Email Sender

After creating your email template, the next step is to send the email. To do this, you inject the email sender into your service. \n

import {
  EmailSenderInterface,
  MAILER_SDK_CLIENT,
} from '@nestixis/nestjs-mailer';
import { Inject, Injectable } from '@nestjs/common';
import InviteAdminWithAccountTemplate from './invite-admin-with-account-template';

@Injectable()
export class AppService {
  constructor(
    @Inject(MAILER_SDK_CLIENT)
    private readonly emailSender: EmailSenderInterface,
  ) {}

  async send(): Promise<void> {
    const translations = {
      titleInside: { subpart1: 'Welcome', subpart2: ' to the platform!' },
      contentPart1: 'Hello',
      contentPart2: 'Your admin account has been created.',
      contentPart3: {
        subpart1: 'Click here to activate your account: ',
        subpart2: 'Activate',
        subpart3: '.',
      },
      contentPart4: {
        subpart1: 'To set your password, click here: ',
        subpart2: 'Set password',
      },
    };

    const emailContent = await InviteAdminWithAccountTemplate({
      translation: translations,
      language: 'en',
      invitationHref: 'xxx',
      passwordHref: 'xxx',
      logoUrl: 'logo.png',
    });

    await this.emailSender.sendEmail(
      'test@test.com',
      'Admin Invitation',
      emailContent,
    );
  }
}

Done!

Image description

That's it! You've successfully integrated nestjs-mailer into your application.

\ For more details and advanced features, check out the NestJS mailer GitHub repository.


This content originally appeared on HackerNoon and was authored by Kamil Fronczak


Print Share Comment Cite Upload Translate Updates
APA

Kamil Fronczak | Sciencx (2025-01-21T19:00:22+00:00) This NestJS Package Turns Email Setup from Nightmare to No-Brainer. Retrieved from https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/

MLA
" » This NestJS Package Turns Email Setup from Nightmare to No-Brainer." Kamil Fronczak | Sciencx - Tuesday January 21, 2025, https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/
HARVARD
Kamil Fronczak | Sciencx Tuesday January 21, 2025 » This NestJS Package Turns Email Setup from Nightmare to No-Brainer., viewed ,<https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/>
VANCOUVER
Kamil Fronczak | Sciencx - » This NestJS Package Turns Email Setup from Nightmare to No-Brainer. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/
CHICAGO
" » This NestJS Package Turns Email Setup from Nightmare to No-Brainer." Kamil Fronczak | Sciencx - Accessed . https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/
IEEE
" » This NestJS Package Turns Email Setup from Nightmare to No-Brainer." Kamil Fronczak | Sciencx [Online]. Available: https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/. [Accessed: ]
rf:citation
» This NestJS Package Turns Email Setup from Nightmare to No-Brainer | Kamil Fronczak | Sciencx | https://www.scien.cx/2025/01/21/this-nestjs-package-turns-email-setup-from-nightmare-to-no-brainer/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.