Skip to main content

Nest_email

搭建项目参考

https://github.com/ChaseTop/material/blob/nest_node/README.md

发送邮件

  1. 申请授权码

  2. # 生成目录
    $ nest g resource email
    # 安装必要包
    $ npm install --save @nestjs-modules/mailer nodemailer
  3. email.module.ts

    import { Module } from '@nestjs/common';
    import { EmailService } from './email.service';
    import { EmailController } from './email.controller';
    import { MailerModule } from '@nestjs-modules/mailer';
    import { PugAdapter } from '@nestjs-modules/mailer/dist/adapters/pug.adapter';

    @Module({
    imports: [
    // 导入 MailerModule 并配置邮件发送参数
    MailerModule.forRoot({
    // 邮件传输配置
    transport: {
    host: 'smtp.163.com', // SMTP 服务器主机名或 IP 地址
    port: 25, // SMTP 服务器端口号
    ignoreTLS: true, // 是否忽略 TLS 连接的安全性
    secure: false, // 是否使用安全连接,通常设置为 false
    auth: {
    user: '你的163邮箱', // SMTP 服务器认证用户
    pass: '步骤1中你的授权码', // SMTP 服务器认证密码
    },
    },
    preview: false, // 是否开启预览模式,通常设置为 false
    template: {
    dir: process.cwd() + '/template/', // 邮件模板文件目录路径,需要手动创建,可有可无
    adapter: new PugAdapter(), // 使用 Pug 模板引擎适配器
    options: {
    strict: true, // Pug 模板引擎的严格模式,通常设置为 true
    },
    },
    })
    ],
    controllers: [EmailController], // 注册 EmailController 控制器
    providers: [EmailService], // 注册 EmailService 服务提供者
    })
    export class EmailModule { }
  4. email.service.ts

    import { Injectable } from '@nestjs/common';
    import { MailerService } from '@nestjs-modules/mailer';
    @Injectable()
    export class EmailService {
    constructor(private readonly mailerService: MailerService) { }
    findAll(subject: string, text: string, html: string) {
    this.mailerService
    .sendMail({
    to: 'zhao.yc@botlet.io',
    from: '16632301768@163.com',
    subject: subject,
    text: text,
    html: html,
    })
    .then(() => {
    console.log(123);
    })
    .catch((err) => {
    console.log(err);
    });
    return `This action returns all email`;
    }
    }

  5. email.controller.ts

    import { Controller, Get } from '@nestjs/common';
    import { EmailService } from './email.service';
    @Controller('email')
    export class EmailController {
    constructor(private readonly emailService: EmailService) { }

    @Get()
    findAll() {
    return this.emailService.findAll('主题', '主题', '内容');
    }

    }
  6. 控制台输出以下内容代表成功

    [Nest] 2220  - 2024/04/09 10:49:30   ERROR [MailerService] Transporter is ready