email.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. const { CrudController } = require('naf-framework-mongoose-free/lib/controller');
  4. const assert = require('assert');
  5. const nodemailer = require('nodemailer');
  6. const path = require('path');
  7. const fs = require('fs');
  8. // 发邮件
  9. class EmailController extends Controller {
  10. constructor(ctx) {
  11. super(ctx);
  12. const { sender } = this.app.config;
  13. this.sender = sender;
  14. }
  15. async sendEmail() {
  16. const { template, receiver, params } = this.ctx.request.body;
  17. assert(template, '缺少模板信息');
  18. assert(receiver, '缺少接收人信息');
  19. const text = this.getTemplate(template, params);
  20. const config = {
  21. host: 'smtp.163.com',
  22. port: 465,
  23. secure: true,
  24. auth: this.sender,
  25. };
  26. const mailOptions = {
  27. from: `"天恩活泉" <${this.sender.user}>`, // 邮件来源
  28. to: receiver, // 邮件发送到哪里,多个邮箱使用逗号隔开
  29. subject: '天恩活泉-邮箱绑定', // 邮件主题
  30. html: text, // html类型的邮件正文
  31. };
  32. const transporter = nodemailer.createTransport(config);
  33. transporter.sendMail(mailOptions, (error, info) => {
  34. if (error) console.log(error);
  35. else console.log(info);
  36. });
  37. this.ctx.ok();
  38. }
  39. getTemplate(template, params) {
  40. const p = path.resolve('template', `${template}.js`);
  41. const tl = require(p);
  42. const f = tl(params);
  43. return f;
  44. }
  45. }
  46. module.exports = CrudController(EmailController, {});