【nest.js】功能模块-邮件服务

155 阅读1分钟

1、安装依赖

npm install nodemailer @nestjs/mailer

2、创建邮件服务

nest generate service mail

3、以QQ邮箱为例

//mail.service.ts
import { Injectable } from '@nestjs/common';
import * as nodemailer from 'nodemailer';

@Injectable()
export class MailService {
    private transporter;

    constructor() {
        this.transporter = nodemailer.createTransport({
            host: 'smtp.qq.com',
            port: 587,
            secure: false,
            auth: {
                user: 'send@mail.com',  //设置发送邮箱
                pass: 'xxxxxxxxxxxx',  //设置邮箱授权码,详见第4点
            },
        });
    }

    //发送邮件
    async sendMail(to: string, subject: string, text: string) {
        const mailOptions = {
            from: '"你的名字" <你的邮箱>',
            to,     //目标
            subject,  //邮件标题
            text,//邮件内容
        }

        return this.transporter.sendMail(mailOptions)
    }
}

4、登录QQ邮箱-设置-账号-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开通该服务可以获得授权码

图片.png

5、controller或service调用示例

//your.module.ts
import { MailService } from '../mail/mail.service';
@Module({
    providers: [
        MailService,
    ]
})
//your.service.ts
import { MailService } from '../mail/mail.service';

export class CsgoService {
    constructor(
        private readonly mailService: MailService,
    ) {
        //调用示例
        this.mailService.sendMail("目标邮箱","邮件标题","邮件内容");
    }
}