安装插件
pnpm add nodemailer
配置发件邮箱(以163邮箱为例)
- 登录进入邮箱后,点击顶部「设置」按钮,选择「常规设置」进入邮箱设置页面
- 选择「POP3/SMTP/IMAP」设置
- 开启
IMAP/SMTP服务
和POP3/SMTP服务
- 在
授权密码管理
选项新增授权密码,设置好授权密码后要好好保存,只有在新增的时候可以查看一次授权密码 - 设置完成后就可以开始定义邮件服务了
自定义邮件服务
@@filename(mail.service.ts)
import { Injectable } from '@nestjs/common'
import { ConfigService } from '@nestjs/config'
import * as nodemailer from 'nodemailer'
// 自定义邮件服务
@Injectable()
export class MailService {
private transporter: nodemailer.Transporter
constructor(
private readonly configService: ConfigService,
) {
// 创建一个Nodemailer transporter实例
this.transporter = nodemailer.createTransport({
// SMTP服务器主机
host: 'smtp.163.com',
// SMTP服务器端口
port: 465,
// 使用 SSL
secure: true,
auth: {
// 发件邮箱
user: 'email@163.com',
// 授权码
pass: '*********',
},
})
}
async sendVerificationCode(email:string, message: string) {
const mailOptions: nodemailer.SendMailOptions = {
// 发件邮箱
from: 'from@email.com',
// 收件邮箱
to: email,
// 邮件主题
subject: 'Mail Title',
// 邮件正文
html: `<h1>${message}</h1>`,
}
// 发送邮件
await this.transporter.sendMail(mailOptions)
}
}
调用邮件服务(以UserModule为例)
user.module.ts
@@filename(user.module.ts)
import { Module } from '@nestjs/common'
import { UserService } from './user.service'
import { UserController } from './user.controller'
import { MailService } from 'src/common/mail/mail.service'
/**
* @description 用户模块
*/
@Module({
controllers: [ UserController ],
providers: [ UserService, MailService ],
exports: [ UserService ]
})
export class UserModule {}
user.service.ts
@@filename(user.service.ts)
import { Injectable } from '@nestjs/common'
import { MailService } from 'src/common/mail/mail.service'
/**
* @description 用户服务
*/
@Injectable()
export class UserService {
constructor(
private readonly mailService: MailService,
) {}
async create() {
await this.mailService.sendVerificationCode('sendmail@mail.com', '123456')
return 'success'
}
}
个人博客:https://www.linmeimei.top/ 欢迎访问