如何使用NestJs结合邮箱服务,定时发邮件提醒下班🫣🫣🫣

在平时上班过程中,我们经常会很认真的写代码,导致忘记了下班,同事都走光了,就剩一个人,这样就会浪费掉了公司的水电了,为了避免这样的事情发生,我们可以编写一个定时器,定时给自己发送邮件,这样就可以提醒到我们到点下班了。

创建邮箱服务和添加定时器

在 nest 中和使用定时器,首先我们应该安装特定的包,如下命令所示:

bash 复制代码
pnpm add nodemailer @nestjs/schedule

安装完成之后,我们要在 app.service.ts 中编写如下代码:

ts 复制代码
// src/app.service.ts
import { Injectable } from "@nestjs/common";
import { Cron } from "@nestjs/schedule";
import * as nodemailer from "nodemailer";
import { Transporter } from "nodemailer";

@Injectable()
export class AppService {
  private transporter: Transporter;

  constructor() {
    this.transporter = nodemailer.createTransport({
      host: "smtp.qq.com",
      port: 587,
      secure: false,
      auth: {
        user: "写你自己的@qq.com",
        pass: "写你自己的",
      },
    });
  }

  async sendMail(to: string, subject: string, text: string): Promise<void> {
    const mailOptions = {
      from: "example@qq.com", // 发送者
      to: to, // 接收者,可以是多个,逗号分隔
      subject: subject, // 主题
      text: text, // 文本内容
    };

    await this.transporter.sendMail(mailOptions);
  }

  @Cron("* * * * * *") // 每秒执行一次
  async handleCron() {
    await this.sendMail("写你自己的", "靓仔", "到点下班啦");
  }
}

当 serive 中的代码编写完成之后,我们要在 app.module 中导入该定时任务:

ts 复制代码
import { Module } from "@nestjs/common";
import { ScheduleModule } from "@nestjs/schedule";

import { AppController } from "./app.controller";
import { AppService } from "./app.service";

@Module({
  imports: [ScheduleModule.forRoot()],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

这里代码编写完成了,我们启动项目,然后再查看邮箱,就可以看到消息轰炸提醒我们下班了:

总结

通过上面的例子我们实现了一个邮箱和定时器的功能,定时给我们发送邮件,只不过这个功能是每秒发送一次,可以根据需要把这个技巧用起来吧。

相关推荐
莪_幻尘10 小时前
Skill 体检:30 个 Skill 全凭感觉?体检器先自曝了 8 个“假 0 分
前端·人工智能·llm
风骏时光牛马10 小时前
AI模型综合能力评测:性能、指令遵循与多场景实测对比
前端
Frag0ut10 小时前
Chrome与Chromium内核浏览器在Windows 11上的新特性全景解析
前端·chrome·windows·web安全·chromium·gemini ai·playready drm
hiahiahia12310 小时前
实现完整 Tool Dispatcher
开发语言·前端
IT_陈寒11 小时前
Java线程池这破玩意,差点让我周末加班排查到凌晨
前端·人工智能·后端
弈栈录11 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
Mr_Mao11 小时前
告别选型困难!集 VueUse、ahooks、Mantine 于一身:286 个 Hook 的 ReaUse 来了
前端·javascript·react.js
凤山老林12 小时前
Spring Boot 集成 iText 7 实现动态 PDF 生成与电子签章:合同、报表场景实战
spring boot·后端·pdf·itext7·电子签章
孙启超12 小时前
【AI开发之Rust】第 19 课:UniFFI 导出核心能力
开发语言·后端·rust
泡海椒12 小时前
趋势分析报表:jquick-pdf折线图PDF生成实战
java·大数据·运维·服务器·前端·pdf