本章節咱們在項目上集成mail,實現發送郵件功能html
個人經常使用郵箱是126郵箱, 若是須要在項目上使用這個郵箱發送郵件,須要開啓SMTP服務。node
1 開啓SMTP服務npm
在設置中找到POP3/SMTP/IMAP,頁面以下,開啓IMAP/SMTP服務,若是已開啓,增長一組受權密碼,複製下來,由於此密碼只顯示一次。服務器
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('主題', '主題', '內容');