'use strict'; const Controller = require('egg').Controller; const { CrudController } = require('naf-framework-mongoose-free/lib/controller'); const assert = require('assert'); const nodemailer = require('nodemailer'); const path = require('path'); const fs = require('fs'); const _ = require('lodash'); class EmailController extends Controller { constructor(ctx) { super(ctx); const { sender } = this.app.config; this.sender = sender; } /** * 发邮件 * @param {String} config 发送人设置 * @param {String} receiver 发送对象(邮箱) * @param {String} template 模板 * @param {Object} params 模板参数 */ async sendEmail() { const { config, template, receiver, params } = this.ctx.request.body; assert(config, '缺少设置'); assert(template, '缺少模板信息'); assert(receiver, '缺少接收人信息'); const sender = this.sender[config]; const { mailContext, mailConfig } = this.getTemplate(template, sender, receiver, params); const transporter = nodemailer.createTransport(mailConfig); transporter.sendMail(mailContext, (error, info) => { if (error) console.log(error); else console.log(info); }); this.ctx.ok({}); } getTemplate(template, sender, receiver, params) { const p = path.resolve('template', `${template}.js`); const tl = require(p); const f = tl(sender, receiver, params); return f; } async error() { const { config, params } = this.ctx.request.body; const sender = this.sender[config]; const receiver = this.app.config.devPerson; const { mailContext, mailConfig } = this.getTemplate('error', sender, receiver, params); const transporter = nodemailer.createTransport(mailConfig); transporter.sendMail(mailContext, (error, info) => { if (error) console.log(error); else console.log(info); }); this.ctx.ok({}); } } module.exports = CrudController(EmailController, {});