【Nest教程】Nest項目配置郵件服務器,實現發送郵件

本章節咱們在項目上集成mail,實現發送郵件功能html

個人經常使用郵箱是126郵箱, 若是須要在項目上使用這個郵箱發送郵件,須要開啓SMTP服務。node

1 開啓SMTP服務npm

在設置中找到POP3/SMTP/IMAP,頁面以下,開啓IMAP/SMTP服務,若是已開啓,增長一組受權密碼,複製下來,由於此密碼只顯示一次。服務器

【Nest教程】Nest項目配置郵件服務器,實現發送郵件

2 安裝依賴文件app

yarn add @nestjs-modules/mailer nodemailer
#or
npm install --save @nestjs-modules/mailer nodemailer

3 配置ide

在app.module中配置this

// 郵件
import { MailerModule } from '@nestjs-modules/mailer';
import { PugAdapter } from '@nestjs-modules/mailer/dist/adapters/pug.adapter';
@Module({
  imports: [
   MailerModule.forRoot({
      transport: {
        host: 'smtp.126.com',
        port: 25,
        ignoreTLS: true,
        secure: false,
        auth: {
          user: '你的郵箱地址',
          pass: '剛纔複製的密碼',
        },
      },
      defaults: {
        from: '"名字" <你的郵箱地址>',
      },
      preview: false,
      template: {
        dir: process.cwd() + '/template/',
        adapter: new PugAdapter(), // or new PugAdapter() or new EjsAdapter()
        options: {
          strict: true,
        },
      },
    })
  ],
  controllers: [AppController],
  providers: [AppService],
})

我只演示此功能須要用到的,3d

4 編寫發送服務code

新建mail文件夾,文件夾下新建mail.service.ts文件,內容以下htm

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

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

  /**
   * 郵件發送
   */
  public example(subject: string, text: string, html: string): void {
    this.mailerService
      .sendMail({
        to: '目標郵箱',
        from: '發送郵箱',
        subject: subject,
        text: text,
        html: html,
      })
      .then(() => {})
      .catch(() => {});
  }
}

5 發送郵件

須要在用到的地方增長

// 導入郵件
import { ExampleService } from '../mail/mail.service';
@Injectable()
export class UserService {
  constructor(
    private readonly exampleService: ExampleService,
  ) {}
}

調用

this.exampleService.example('主題', '主題', '內容');
相關文章
相關標籤/搜索