// src/common/email/email.service.ts
import { Injectable } from '@nestjs/common';
import * as nodemailer from 'nodemailer';
import { LoggerService } from '../logger/logger.service';
@Injectable()
export class EmailService {
private transporter: nodemailer.Transporter;
constructor(private logger: LoggerService) {
// 初始化邮件发送配置
this.transporter = nodemailer.createTransport({
host: 'smtp.qq.com',
port: 465,
secure: true,
auth: { user: '你的邮箱账号', pass: '邮箱授权码' }
});
}
// 异步发送邮件+重试机制
async sendEmail(to: string, subject: string, html: string, count = 3) {
try {
await this.transporter.sendMail({ to, subject, html });
this.logger.info('邮件发送成功', { to, subject });
return true;
} catch (err) {
this.logger.error('邮件发送失败', { to, subject, err: err.message });
if (count > 0) {
// 失败重试
return await this.sendEmail(to, subject, html, count - 1);
}
return false;
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049657/viewspace-3173110/ ,如需转载,请注明出处,否则将追究法律责任。