РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpMaLt 115 of 201 menu
◀ ▶

Письмо в Nest

Модуль почты уже в импортах, но ни один адрес не вызывает отправку. Клиент открывает страницу, а уведомление так и не собирается, хотя транспорт готов принять текст.

MailerService внедряют в провайдер так же, как другие зависимости Nest. Асинхронная операция sendMail принимает объект с получателем, темой и полем text для простого текста без разметки. Контроллер только вызывает метод сервиса и отдаёт результат клиенту.

Покажем на примере постов:

import { Module } from '@nestjs/common'; import { MailerModule } from '@nestjs-modules/mailer'; import { PostController } from './post.controller.js'; import { PostService } from './post.service.js'; @Module({ imports: [ MailerModule.forRoot({ transport: { jsonTransport: true, }, defaults: { from: '"Posts" <posts@app.test>', }, }), ], controllers: [PostController], providers: [PostService], }) export class AppModule {}

Сервис отправит короткое текстовое письмо:

import { Injectable } from '@nestjs/common'; import { MailerService } from '@nestjs-modules/mailer'; @Injectable() export class PostService { mailerService: MailerService; constructor(mailerService: MailerService) { this.mailerService = mailerService; } async sendDigest() { return this.mailerService.sendMail({ to: 'reader@app.test', subject: 'Сводка', text: 'Новые материалы готовы.', }); } }

Контроллер вызовет отправку и вернёт ответ операции:

import { Controller, Post } from '@nestjs/common'; import { PostService } from './post.service.js'; @Controller('posts') export class PostController { postService: PostService; constructor(postService: PostService) { this.postService = postService; } @Post('mail') sendMail() { return this.postService.sendDigest(); } }

Добавьте в WorkerService отправку короткого текстового письма и вызовите её из WorkerController.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить