Электрондук каттарды жөнөтүү колдонуучу эскертмелери, транзакциялык жаңыртуулар же маркетинг максаттары үчүн болобу, көптөгөн колдонмолордо маанилүү функция болуп саналат.
Бирок, электрондук почта чечимдерин ишке ашыруу кээде түйшүктүү болушу мүмкүн, анткени сиз почтаны шаблон тили менен бириктиришиңиз керек, көз карандылыкты текшеришиңиз керек ...
Бирок!
@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
пакети ушундай электрондук почта калыптарын иштеп чыгууга мүмкүндүк берет.
**Бирок ага чейин, сиз вывить-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
колдонмоңузга ийгиликтүү киргиздиңиз.
Көбүрөөк маалымат жана өркүндөтүлгөн функциялар үчүн, караңыз