ts发送邮箱,以网易邮箱来演示

①引入依赖:

npm i @nestjs-modules/mailer nodemailer

这里是引入相应的需要的依赖。

创建模块,以及服务

nest generate module sendEmail 

nest generate service sendEmail 

②在app.module中注册,之后在其它的模块就可以使用

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

@Module({
  imports: [
    MailerModule.forRoot({
      transport: {
        host: process.env.EMAIL_HOST, // Replace with the SMTP server of the email provider
        port: parseInt(process.env.EMAIL_PORT), // Typically 465 for secure SMTP (SSL/TLS)
        secure: true, // Use SSL/TLS

        auth: {
          user: process.env.EMAIL_USERNAME, // Your email address
          pass: process.env.EMAIL_PASSWORD, // Your email password
        },
      },
      defaults: {
        from: `"${process.env.EMAIL_FROM}" <${process.env.EMAIL_FROM_ADDRESS}>`, // Default sender address
      },
      template: {
        dir: join(__dirname, 'templates'), // Directory for email templates
        adapter: new PugAdapter(), // Template engine
        options: {
          strict: true,
        },
      },
    }),
  ],
  providers: [
    
  ],
  exports: [],
})
export class AppModule {}

EMAIL_HOST='smtp.163.com'
EMAIL_PORT='465'
EMAIL_USERNAME='你的邮箱号'
EMAIL_PASSWORD='你的邮箱密码'
EMAIL_FROM='发送的来源信息'
EMAIL_FROM_ADDRESS='你的邮箱号'

到这里你就配置完成了信息

import { Module } from '@nestjs/common';
import { SendEmailService } from './send-email.service';

@Module({
  providers: [SendEmailService],
  exports: [SendEmailService],
})
export class SendEmailModule {}

③使用:

我这里将内容抽取出来作为方法来使用

import { MailerService } from '@nestjs-modules/mailer';
import { Injectable } from '@nestjs/common';

@Injectable()
export class SendEmailService {
  constructor(private readonly mailerService: MailerService) {}

  // eslint-disable-next-line max-lines-per-function
  async sendEmail(
    to: string,
    subject: string,
    title: string,
    subTitle: string,
    description: string,
    content: string | number,
  ) {
    const result = await this.mailerService.sendMail({
      to,
      from: process.env.EMAIL_FROM_ADDRESS,
      subject: subject,
      template: 'reset-password',
      context: {
        title,
        subTitle,
        description,
        content,
      },
    });
    return result;
  }
}

这里的reset-password是模块的名称

就在该模块下的templates文件夹下创建reset-password.hbs内容

<html lang='en-US'>

  <head>

    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />

    <title>${title}</title>

    <meta name='description' content='Email Template' />

    <style type='text/css'>

      a:hover { text-decoration: underline !important; }

    </style>

  </head>

  <body

    marginheight='0'

    topmargin='0'

    marginwidth='0'

    style='margin: 0px; background-color: #f2f3f8'

    leftmargin='0'

  >

    <!--100% body table-->

           <!-- 这里输入自己想要的样式,要发送的内容等-->

    <!--/100% body table-->

  </body>

</html>

这里就是发送的样式的路径位置,以及文件名称

这样就将整个发送的从注册到使用书写完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值