|
@@ -7,6 +7,7 @@ const { ObjectId } = require('mongoose').Types;
|
|
|
const { CrudService } = require('naf-framework-mongoose/lib/service');
|
|
|
const { BusinessError, ErrorCode } = require('naf-core').Error;
|
|
|
const moment = require('moment');
|
|
|
+const nodemailer = require('nodemailer');
|
|
|
|
|
|
class UtilService extends CrudService {
|
|
|
|
|
@@ -16,6 +17,34 @@ class UtilService extends CrudService {
|
|
|
return date;
|
|
|
}
|
|
|
|
|
|
+ async sendMail(email, subject, text, html) {
|
|
|
+ const user_email = this.ctx.app.config.user_email;
|
|
|
+ const auth_code = this.ctx.app.config.auth_code;
|
|
|
+ const transporter = nodemailer.createTransport({
|
|
|
+ service: 'qq',
|
|
|
+ secureConnection: true,
|
|
|
+ port: 465,
|
|
|
+ auth: {
|
|
|
+ user: user_email, // 账号
|
|
|
+ pass: auth_code, // 授权码
|
|
|
+
|
|
|
+ },
|
|
|
+ });
|
|
|
+ const mailOptions = {
|
|
|
+ from: user_email, // 发送者,与上面的user一致
|
|
|
+ to: email, // 接收者,可以同时发送多个,以逗号隔开
|
|
|
+ subject, // 标题
|
|
|
+ text, // 文本
|
|
|
+ html,
|
|
|
+ };
|
|
|
+
|
|
|
+ try {
|
|
|
+ await transporter.sendMail(mailOptions);
|
|
|
+ return true;
|
|
|
+ } catch (err) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
module.exports = UtilService;
|