|
@@ -5,43 +5,40 @@ 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 { template, receiver, params } = this.ctx.request.body;
|
|
|
+ const { config, template, receiver, params } = this.ctx.request.body;
|
|
|
+ assert(config, '缺少设置');
|
|
|
assert(template, '缺少模板信息');
|
|
|
assert(receiver, '缺少接收人信息');
|
|
|
- const text = this.getTemplate(template, params);
|
|
|
- const config = {
|
|
|
- host: 'smtp.163.com',
|
|
|
- port: 465,
|
|
|
- secure: true,
|
|
|
- auth: this.sender,
|
|
|
- };
|
|
|
- const mailOptions = {
|
|
|
- from: `"天恩活泉" <${this.sender.user}>`, // 邮件来源
|
|
|
- to: receiver, // 邮件发送到哪里,多个邮箱使用逗号隔开
|
|
|
- subject: '天恩活泉-邮箱绑定', // 邮件主题
|
|
|
- html: text, // html类型的邮件正文
|
|
|
- };
|
|
|
- const transporter = nodemailer.createTransport(config);
|
|
|
- transporter.sendMail(mailOptions, (error, info) => {
|
|
|
+ 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();
|
|
|
+ this.ctx.ok({});
|
|
|
}
|
|
|
|
|
|
- getTemplate(template, params) {
|
|
|
+ getTemplate(template, sender, receiver, params) {
|
|
|
const p = path.resolve('template', `${template}.js`);
|
|
|
const tl = require(p);
|
|
|
- const f = tl(params);
|
|
|
+ const f = tl(sender, receiver, params);
|
|
|
return f;
|
|
|
}
|
|
|
}
|