การส่งอีเมลเป็นฟังก์ชันการทำงานที่สำคัญในแอปพลิเคชันต่างๆ มากมาย ไม่ว่าจะเป็นการแจ้งเตือนผู้ใช้ การอัปเดตธุรกรรม หรือเพื่อการตลาด
อย่างไรก็ตาม การนำโซลูชันอีเมลไปใช้บางครั้งอาจยุ่งยาก เนื่องจากคุณต้องรวมโปรแกรมส่งเมล์กับภาษาเทมเพลต ตรวจสอบการอ้างอิง...
แต่!
ด้วยแพ็คเกจ @nestixis/nestjs-mailer
คุณสามารถลดความซับซ้อนของกระบวนการนี้ โดยยังคงความยืดหยุ่นและความน่าเชื่อถือไว้ได้
แพ็คเกจนี้ใช้ประโยชน์จากพลังของ React และ Nodemailer ทำให้เป็นเครื่องมือที่ทันสมัยและเป็นมิตรต่อนักพัฒนาสำหรับการสร้างเทมเพลตอีเมลแบบไดนามิกและส่งอีเมลได้อย่างง่ายดาย
มาดูกันว่าคุณสามารถตั้งค่าและใช้งานมันได้อย่างไร :)
ในการเริ่มต้น คุณต้องติดตั้งแพ็กเกจ nestjs-mailer
ในแอปพลิเคชัน NestJS ของคุณ แพ็กเกจนี้พร้อมใช้งานผ่าน 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
ลงในแอปพลิเคชันของคุณเรียบร้อยแล้ว
สำหรับรายละเอียดเพิ่มเติมและคุณลักษณะขั้นสูง โปรดดูที่