|
@@ -0,0 +1,48 @@
|
|
|
|
+'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');
|
|
|
|
+
|
|
|
|
+// 发邮件
|
|
|
|
+class EmailController extends Controller {
|
|
|
|
+ constructor(ctx) {
|
|
|
|
+ super(ctx);
|
|
|
|
+ const { sender } = this.app.config;
|
|
|
|
+ this.sender = sender;
|
|
|
|
+ }
|
|
|
|
+ async sendEmail() {
|
|
|
|
+ const { template, receiver, params } = this.ctx.request.body;
|
|
|
|
+ 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) => {
|
|
|
|
+ if (error) console.log(error);
|
|
|
|
+ else console.log(info);
|
|
|
|
+ });
|
|
|
|
+ this.ctx.ok();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ getTemplate(template, params) {
|
|
|
|
+ const p = path.resolve('template', `${template}.js`);
|
|
|
|
+ const tl = require(p);
|
|
|
|
+ const f = tl(params);
|
|
|
|
+ return f;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+module.exports = CrudController(EmailController, {});
|