El. laiškų siuntimas yra svarbi daugelio programų funkcija, nesvarbu, ar tai naudotojų pranešimai, operacijų atnaujinimai ar rinkodaros tikslai.
Tačiau el. pašto sprendimų įgyvendinimas kartais gali būti sudėtingas, nes turite integruoti laiškus su šablonų kalba, patikrinti, ar nėra priklausomybių...
Bet!
Naudodami paketą @nestixis/nestjs-mailer
galite supaprastinti šį procesą, kartu užtikrindami lankstumą ir patikimumą.
Šis paketas išnaudoja „React“ ir „Nodemailer“ galias, todėl tai yra modernus ir kūrėjams patogus įrankis, leidžiantis kurti dinaminius el. pašto šablonus ir be vargo siųsti el.
Pasinerkime į tai, kaip galite jį nustatyti ir naudoti :)
Norėdami pradėti, savo NestJS programoje turite įdiegti paketą nestjs-mailer
. Šis paketas pasiekiamas per npm, todėl diegimas yra greitas ir paprastas. Savo terminale paleiskite šią komandą:
npm install @nestixis/nestjs-mailer
Kai paketas bus įdiegtas, kitas žingsnis yra sukonfigūruoti MailerSdkModule
programoje.
Konfigūravimas yra paprastas, o bandymo tikslais galite naudoti įrankį, pvz
Štai pavyzdys, kaip jį nustatyti:
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 {}
Norėdami, kad jūsų el. laiškai būtų vizualiai patrauklūs ir dinamiškesni, galite derinti šablonus su React, o paketas @react-email/components
leidžia kurti tokius el. pašto šablonus.
**Tačiau prieš tai turėtumėte iškviesti failą Kutsu-admin-with-account-template.tsx ir nustatyti
**
"jsx": "react"
savo tsconfig.json
Štai šablono, skirto pakviesti naują administratorių, pavyzdys:
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> ); }
Sukūrę el. pašto šabloną, kitas žingsnis yra išsiųsti el. laišką. Norėdami tai padaryti, įveskite el. pašto siuntėją į savo paslaugą.
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, ); } }
tai viskas! Sėkmingai integravote nestjs-mailer
į savo programą.
Norėdami gauti daugiau informacijos ir išplėstinių funkcijų, žr