首頁 >web前端 >js教程 >如何在NestJS中輕鬆發送電子郵件?

如何在NestJS中輕鬆發送電子郵件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-06 06:31:40488瀏覽

發送電子郵件是許多應用程式中的關鍵功能,無論是用於使用者通知、事務更新還是行銷目的。然而,實施電子郵件解決方案有時可能很麻煩,因為您必須將郵件程式與範本語言集成,檢查依賴關係...

但是!

使用 @nestixis/nestjs-mailer 包,您可以簡化此過程,同時確保靈活性和可靠性。

這個套件利用了 React 和 Nodemailer 的強大功能,使其成為一個現代且對開發人員友好的工具,可以輕鬆建立動態電子郵件範本並發送電子郵件。

讓我們深入了解如何設定和使用它:)

安裝包

首先,您需要在 NestJS 應用程式中安裝 Nestjs-mailer 套件。該軟體包可透過 npm 取得,使安裝快速且簡單。在終端機中執行以下命令:

npm install @nestixis/nestjs-mailer

配置模組

安裝軟體套件後,下一步是在您的應用程式中設定 MailerSdkModule。

配置很簡單,出於測試目的,您可以使用 Mailcatch 等工具來捕獲和預覽電子郵件,而無需將其發送給真實用戶。以下是如何設定的範例:

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

建立電子郵件模板

為了讓您的電子郵件在視覺上更有吸引力且更具活力,您可以將範本與 React 結合使用,而 package@react-email/components 允許您設計此類電子郵件範本。

但在此之前,您應該呼叫檔案 inform-admin-with-account-template.tsx 並設定

「jsx」:「反應」

在你的 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>




<hr>

<h2>
  
  
  Injecting the Email Sender
</h2>

<p>After creating your email template, the next step is to send the email. To do this, you inject the email sender into your service.<br>
</p>

<pre class="brush:php;toolbar:false">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,
    );
  }
}

完畢!

How to easily send emails in NestJS?

就是這樣!您已成功將 Nestjs-mailer 整合到您的應用程式中。

有關更多詳細資訊和進階功能,請查看 NestJS 郵件程式 GitHub 儲存庫。

以上是如何在NestJS中輕鬆發送電子郵件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn