emailsenter.js 4.95 KB
var console = process.console;
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
var yaml_config = require('node-yaml-config');
var config = yaml_config.load('./config/config.yml');

module.exports = function(Emailsenter) {
  Emailsenter.disableRemoteMethod('find', true);
  Emailsenter.disableRemoteMethod('findById', true);
  Emailsenter.disableRemoteMethod('findOne', true);
  Emailsenter.disableRemoteMethod('create', true);

  //send mail without app_id
  Emailsenter.postWithoutApp_id = function (req,cb) {
    //check input data
    console.tag("input").time().file().log(req);

  //set nodemailer
      smtpTransport = nodemailer.createTransport(smtpTransport({
        host: "smtp.gmail.com",
        secureConnection: false,
        port: 587,
        auth: {
          user: config.email.username,
          pass: config.email.password
        }
      }));


    //set defult response
    var response = {
      "resultCode": "50000",
      "resultDescription": "mail error: Missing or Invalid Param"
    };

    //set mail
    var mailOptions = {
      to: req.header.to,
      subject: req.header.subject,
      text: req.body.text,
      attachments: req.body.attachments,
      cc: '',
      bcc: ''
    };

    //send
    if (mailOptions) {
      smtpTransport.sendMail(mailOptions, function(error, resp) {
        if (error) {
          var response = {
            "resultCode": "50000",
            "resultDescription": "System error"
          };
          console.tag("output").time().file().log(response);
          cb(null,response);
        } else {
          var response = {
            "resultCode": "20000",
            "resultDescription": "Success"
          };
          console.tag("output").time().file().log(response);
          cb(null,response);
        }
      });
    }else{
      console.tag("output").time().file().log(response);
      cb(null,response);
    }
  }//send mail without app_id(END)

  //send mail without app_id
  Emailsenter.postWithApp_id = function (req,cb) {
    //check input data
    console.tag("input").time().file().log(req);

    Emailsenter.find({where: {"app_id": req.app_id,"delete_at":null}}, function (err, res) {
      if (err) {//error by database
        var response = {
          "resultCode": "50000",
          "resultDescription": "System error"
        };
        console.tag("output").time().file().log(response);
        cb(null, response);
      }
      else {//found database
        if (res.length) {// found data by query
          //check responsedata by query
          console.tag("query output").time().file().log(res);

          //set to in email with app_id
          for(var i =0;i<res.length;i++)
            to += res[i].email +",";


            smtpTransport = nodemailer.createTransport(smtpTransport({
              host: "smtp.gmail.com",
              secureConnection: false,
              port: 587,
              auth: {
                user: config.email.username,
                pass: config.email.password
              }
            }));

          response = {
            "resultCode": "50000",
            "resultDescription": "mail error: Missing or Invalid Param"
          };

          var mailOptions = {
            to: to,
            subject: req.header.subject,
            text: req.body.text,
            attachments: req.body.attachments,
            cc: '',
            bcc: ''
          };
          if (mailOptions) {
            smtpTransport.sendMail(mailOptions, function(error, resp) {
              if (error) {

                console.log(error);
                response = {
                  "resultCode": "50000",
                  "resultDescription": "System error"
                };
                console.tag("output").time().file().log(response);
                cb(null,response);
              } else {
                response = {
                  "resultCode": "20000",
                  "resultDescription": "Success"
                };
                console.tag("output").time().file().log(response);
                cb(null,response);
              }
            });
          }else{
            console.tag("output").time().file().log(response);
            cb(null,response);
          }

        } else {//Database Not found data
          response = {
            "resultCode": "40400",
            "resultDescription": "data not found"
          };
          console.tag("output").time().file().log(response);
          cb(null, response);
        }

      }
    });
  }//send mail without app_id(END)

  Emailsenter.remoteMethod('postWithoutApp_id',
    {
      http: {path: '/', verb: 'post'},
      accepts: {arg: 'req', type: 'object', http: {source: 'body'}},
      returns: {arg: "return", type: 'object',root:true}
    });
  Emailsenter.remoteMethod('postWithApp_id',
    {
      http: {path: '/appid', verb: 'post'},
      accepts: {arg: 'req', type: 'object', http: {source: 'body'}},
      returns: {arg: "return", type: 'object',root:true}
    });
};