lrf %!s(int64=2) %!d(string=hai) anos
pai
achega
7cde0079ae
Modificáronse 4 ficheiros con 51 adicións e 1 borrados
  1. 15 0
      app/controller/email.js
  2. 1 0
      app/router.js
  3. 2 1
      config/config.default.js
  4. 33 0
      template/error.js

+ 15 - 0
app/controller/email.js

@@ -41,5 +41,20 @@ class EmailController extends Controller {
     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, {});

+ 1 - 0
app/router.js

@@ -9,4 +9,5 @@ module.exports = app => {
   router.get('/', controller.home.index);
   console.log(`${routePrefix}/sendEmail`);
   router.post(`${routePrefix}/sendEmail`, controller.email.sendEmail);
+  router.post(`${routePrefix}/error`, controller.email.error);
 };

+ 2 - 1
config/config.default.js

@@ -62,7 +62,8 @@ module.exports = appInfo => {
       pass: 'URWCTDJNYKVOBBRN',
     },
   };
-
+  // 开发人员邮箱,","分隔
+  config.devPerson = '402788946@qq.com,2938260457@qq.com';
   // 路由设置
   config.routePrefix = '/semail/api';
   return {

+ 33 - 0
template/error.js

@@ -0,0 +1,33 @@
+const _ = require('lodash');
+const assert = require('assert');
+
+/**
+ * 服务发生错误的拦截
+ * @param {Object} sender 发送人设置
+ * @param {String} receiver 发送对象
+ * @param {Object} params 模板参数
+ */
+module.exports = (sender, receiver, params) => {
+  assert(sender, '缺少发送人信息');
+  const { from, user, pass } = sender;
+  const auth = { user, pass };
+  const mailConfig = {
+    host: 'smtp.163.com',
+    port: 465,
+    secure: true,
+    auth,
+  };
+  const { errmsg, errcode } = params;
+  let text = `<p>错误代码:${errcode}</p><p>错误信息:<br/>${errmsg}</p>`;
+  while (text.includes('\n')) {
+    text = text.replace('\n', '<br/>');
+  }
+  console.log(text);
+  const mailContext = {
+    from: `"${from}" <${user}>`, // 邮件来源
+    to: receiver, // 邮件发送到哪里,多个邮箱使用逗号隔开
+    subject: `${from}-服务发生错误`, // 邮件主题
+    html: text, // html类型的邮件正文
+  };
+  return { mailContext, mailConfig };
+};