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 PackageTo 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 ModuleOnce 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: '[email protected]', }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {} Creating an Email TemplateTo 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 (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(): PromiseThat's it! You've successfully integrated nestjs-mailer into your application.
\ For more details and advanced features, check out the NestJS mailer GitHub repository.
All Rights Reserved. Copyright , Central Coast Communications, Inc.