Menghantar e-mel ialah fungsi penting dalam banyak aplikasi, sama ada untuk pemberitahuan pengguna, kemas kini transaksi atau tujuan pemasaran. Walau bagaimanapun, melaksanakan penyelesaian e-mel kadangkala boleh menyusahkan, kerana anda perlu menyepadukan mel dengan bahasa templat, semak kebergantungan...
Tetapi!
Dengan pakej @nestixis/nestjs-mailer, anda boleh memudahkan proses ini sambil memastikan fleksibiliti dan kebolehpercayaan.
Pakej ini memanfaatkan kuasa React dan Nodemailer, menjadikannya alat moden dan mesra pembangun untuk membina templat e-mel dinamik dan menghantar e-mel dengan mudah.
Mari kita mendalami cara anda boleh menyediakannya dan menggunakannya :)
Untuk bermula, anda perlu memasang pakej nestjs-mailer dalam aplikasi NestJS anda. Pakej ini tersedia melalui npm, menjadikan pemasangan cepat dan mudah. Jalankan arahan berikut dalam terminal anda:
npm install @nestixis/nestjs-mailer
Setelah pakej dipasang, langkah seterusnya ialah mengkonfigurasi MailerSdkModule dalam aplikasi anda.
Konfigurasi adalah mudah dan untuk tujuan ujian, anda boleh menggunakan alat seperti Mailcatch untuk menangkap dan pratonton e-mel tanpa menghantarnya kepada pengguna sebenar. Berikut ialah contoh cara untuk menyediakannya:
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 {}
Untuk menjadikan e-mel anda menarik secara visual dan lebih dinamik, anda boleh menggabungkan templat dengan React, dan package@react-email/komponen, membolehkan anda mereka bentuk templat e-mel tersebut.
Tetapi sebelum itu, anda harus memanggil fail invite-admin-with-account-template.tsx dan tetapkan
"jsx": "react"
dalam tsconfig.json anda
Berikut ialah contoh templat untuk menjemput pengguna pentadbir baharu:
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, ); } }
Itu sahaja! Anda telah berjaya menyepadukan nestjs-mailer ke dalam aplikasi anda.
Untuk butiran lanjut dan ciri lanjutan, lihat repositori GitHub mel NestJS.
Atas ialah kandungan terperinci Bagaimana untuk menghantar e-mel dalam NestJS dengan mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!