NestJS 是一个用于构建高效、可扩展 Node.js 服务器端应用程序的框架。它使用现代 JavaScript 或 TypeScript 构建,并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式响应编程)的元素。
发送电子邮件是 Web 应用程序中的常见需求,通常用于通知、验证或其他与用户交互的目的。NestJS 提供了多种方法来发送电子邮件,其中最常见的是使用 SMTP(简单邮件传输协议)。
在 NestJS 中发送电子邮件主要有以下几种方式:
@nestjs/common
模块:虽然这不是发送电子邮件的最佳方式,但它提供了一个简单的起点。nodemailer
,这是一个流行的 Node.js 邮件发送库,可以与 NestJS 无缝集成。以下是使用 nodemailer
在 NestJS 中发送电子邮件的示例:
npm install @nestjs/common @nestjs/core nodemailer
// email.service.ts
import { Injectable } from '@nestjs/common';
import * as nodemailer from 'nodemailer';
@Injectable()
export class EmailService {
private transporter: nodemailer.Transporter;
constructor() {
this.transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'your-email@example.com',
pass: 'your-email-password',
},
});
}
async sendEmail(to: string, subject: string, text: string) {
const info = await this.transporter.sendMail({
from: '"Your Name" <your-email@example.com>',
to,
subject,
text,
});
console.log('Message sent: %s', info.messageId);
}
}
// app.controller.ts
import { Controller, Post, Body } from '@nestjs/common';
import { EmailService } from './email.service';
@Controller()
export class AppController {
constructor(private readonly emailService: EmailService) {}
@Post('send-email')
async sendEmail(@Body() emailData: { to: string, subject: string, text: string }) {
await this.emailService.sendEmail(emailData.to, emailData.subject, emailData.text);
}
}
领取专属 10元无门槛券
手把手带您无忧上云