paint-brush
この NestJS パッケージは、メールのセットアップを悪夢から簡単なものに変える@axotion
233 測定値

この NestJS パッケージは、メールのセットアップを悪夢から簡単なものに変える

Kamil Fronczak5m2025/01/21
Read on Terminal Reader

長すぎる; 読むには

Nestjs-mailer パッケージは、動的なメール テンプレートを構築し、メールを簡単に送信するための最新のツールです。React と Nodemailer のパワーを活用し、開発者にとって使いやすいツールとなっています。
featured image - この NestJS パッケージは、メールのセットアップを悪夢から簡単なものに変える
Kamil Fronczak HackerNoon profile picture

電子メールの送信は、ユーザー通知、トランザクションの更新、マーケティング目的など、多くのアプリケーションにとって重要な機能です。


ただし、メール ソリューションの実装は、メーラーをテンプレート言語と統合したり、依存関係を確認したりする必要があるため、面倒になる場合があります。


しかし!


@nestixis/nestjs-mailerパッケージを使用すると、柔軟性と信頼性を確保しながらこのプロセスを簡素化できます。


このパッケージは、React と Nodemailer のパワーを活用し、動的な電子メール テンプレートを構築し、電子メールを簡単に送信するための最新の開発者向けツールとなっています。


設定方法と使用方法について詳しく説明します :)

パッケージのインストール

開始するには、NestJS アプリケーションにnestjs-mailerパッケージをインストールする必要があります。このパッケージは npm 経由で入手できるため、インストールは迅速かつ簡単です。ターミナルで次のコマンドを実行します。

 npm install @nestixis/nestjs-mailer

モジュールの設定

パッケージがインストールされたら、次のステップはアプリケーションでMailerSdkModuleを構成することです。


設定は簡単で、テスト目的で次のようなツールを使うことができます。メールキャッチ実際のユーザーにメールを送信せずに、メールをキャプチャしてプレビューします。


設定方法の例を次に示します。

 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 {}

メールテンプレートの作成

メールを視覚的に魅力的でダイナミックなものにするために、テンプレートを React と組み合わせることができます。パッケージ@react-email/components使用すると、そのようなメール テンプレートを設計できます。


**ただし、その前に、invite-admin-with-account-template.tsxファイルを呼び出して設定する必要があります。
**

"jsx": "react"

tsconfig.jsonで


新しい管理者ユーザーを招待するためのテンプレートの例を次に示します。

 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> ); }

メール送信者の挿入

メール テンプレートを作成したら、次のステップはメールを送信することです。これを行うには、メールの送信者をサービスに挿入します。

 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( '[email protected]', 'Admin Invitation', emailContent, ); } }

終わり!

画像の説明

これで完了ですnestjs-mailerアプリケーションに正常に統合できました。


詳しい情報や高度な機能については、 NestJS メーラー GitHub リポジトリ