Built motion from commit c671bd6.|0.0.103
[motion.git] / server / config / smtp / smtp.js
index e2eaa29..b008c74 100644 (file)
@@ -1,417 +1 @@
-'use strict';
-
-var _ = require('lodash');
-var nodemailer = require('nodemailer');
-var smtpTransport = require('nodemailer-smtp-transport');
-
-var MailRoom = require('../../models').MailRoom;
-var MailMessage = require('../../models').MailMessage;
-var ContactEmail = require('../../models').ContactEmail;
-var Contact = require('../../models').Contact;
-
-function Smtp(doc) {
-  console.log('New Smtp Instance...');
-  this.doc = doc;
-  this.smtp = nodemailer.createTransport(smtpTransport({
-    host: doc.host,
-    port: doc.port,
-    secure: doc.ssl,
-    debug: true,
-    auth: {
-      user: doc.username,
-      pass: doc.password
-    }
-  }));
-}
-
-Smtp.prototype.send = function(mailMessage) {
-  var that = this;
-  var mMessage = mailMessage;
-  var mRoom;
-
-  if (mMessage.inReplyTo) {
-    return MailMessage
-      .findOne({
-        where: {
-          messageId: mMessage.inReplyTo
-        }
-      })
-      .then(function(mailMessageParent) {
-        return mailMessageParent
-          .getMailRoom();
-      })
-      .then(function(mailRoom) {
-        mRoom = mailRoom;
-
-        return mailRoom
-          .addMailMessage(mMessage);
-      })
-      .then(function() {
-
-        return Contact
-          .findOrCreate({
-            where: {},
-            include: [{
-              model: ContactEmail,
-              as: 'Emails',
-              where: {
-                email: mMessage.from
-              }
-            }],
-            defaults: {
-              Emails: [{
-                email: mMessage.from
-              }]
-            }
-          });
-      })
-      .spread(function(contact, created) {
-        // CONTACT -> FROM
-        var promises = [];
-        var tos = mMessage.to ? mMessage.to.split(';') : [];
-
-        mMessage
-          .setFrom(contact);
-
-        tos.forEach(function(email) {
-          promises.push(Contact
-            .findOrCreate({
-              where: {},
-              include: [{
-                model: ContactEmail,
-                as: 'Emails',
-                where: {
-                  email: email
-                }
-              }],
-              defaults: {
-                Emails: [{
-                  email: email
-                }]
-              }
-            }));
-        });
-
-        return promises;
-      })
-      .all()
-      .then(function(contacts) {
-        // CONTACTS -> TO
-        var tos = _.map(contacts, function(elm) {
-          return elm[0];
-        });
-
-        mMessage
-          .setTo(tos);
-
-        var promises = [];
-        var ccs = mMessage.cc ? mMessage.cc.split(';') : [];
-
-        ccs.forEach(function(email) {
-          promises.push(Contact
-            .findOrCreate({
-              where: {},
-              include: [{
-                model: ContactEmail,
-                as: 'Emails',
-                where: {
-                  email: email
-                }
-              }],
-              defaults: {
-                Emails: [{
-                  email: email
-                }]
-              }
-            }));
-        });
-
-        return promises;
-      })
-      .all()
-      .then(function(contacts) {
-        // CONTACTS -> CC
-        var ccs = _.map(contacts, function(elm) {
-          return elm[0];
-        });
-
-        mMessage
-          .setCc(ccs);
-
-        var promises = [];
-        var bccs = mMessage.bcc ? mMessage.to.split(';') : [];
-
-        bccs.forEach(function(email) {
-          promises.push(Contact
-            .findOrCreate({
-              where: {},
-              include: [{
-                model: ContactEmail,
-                as: 'Emails',
-                where: {
-                  email: email
-                }
-              }],
-              defaults: {
-                Emails: [{
-                  email: email
-                }]
-              }
-            }));
-        });
-
-        return promises;
-      })
-      .all()
-      .then(function(contacts) {
-        // CONTACTS -> BCC
-        var bcs = _.map(contacts, function(elm) {
-          return elm[0];
-        });
-
-        mMessage
-          .setBcc(bcs);
-      })
-      .then(function() {
-        var options = {
-          status: mMessage.status,
-          from: mMessage.from,
-          to: mMessage.to,
-          cc: mMessage.cc,
-          subject: mMessage.subject,
-          html: mMessage.html,
-          text: mMessage.text,
-          headers: {
-            'X-Laziness-level': 1000
-          }
-        };
-
-        if (mMessage.MailAttachments) {
-          options.attachments = _.map(mMessage.MailAttachments, function(elm) {
-            return {
-              path: elm.path
-            }
-          });
-        }
-
-        that.smtp.sendMail(options, function(error, response) {
-          if (error) {
-            console.error('error', error);
-            return mMessage
-              .update({
-                status: 'FAILED'
-              })
-              .catch(function(err) {
-                console.error(err);
-              });
-          } else {
-            return mMessage
-              .update({
-                messageId: response.messageId,
-                status: 'SENT'
-              })
-              .catch(function(err) {
-                console.error(err);
-              });
-          }
-        });
-      })
-      .catch(function(err) {
-        console.error('err', err);
-      });
-  } else {
-    return MailRoom
-      .findOrCreate({
-        where: {
-          id: mMessage.MailRoomId
-        },
-        defaults: {
-          subject: mMessage.subject,
-          from: mMessage.from,
-          status: 'OPEN',
-          MailAccountId: that.doc.MailAccountId
-        }
-      })
-      .spread(function(mailRoom) {
-        mRoom = mailRoom;
-
-        return mailRoom
-          .addMailMessage(mMessage);
-      })
-      .then(function() {
-
-        return Contact
-          .findOrCreate({
-            where: {},
-            include: [{
-              model: ContactEmail,
-              as: 'Emails',
-              where: {
-                email: mMessage.from
-              }
-            }],
-            defaults: {
-              Emails: [{
-                email: mMessage.from
-              }]
-            }
-          });
-      })
-      .spread(function(contact, created) {
-        // CONTACT -> FROM
-        var promises = [];
-        var tos = mMessage.to ? mMessage.to.split(';') : [];
-
-        mMessage
-          .setFrom(contact);
-
-        tos.forEach(function(email) {
-          promises.push(Contact
-            .findOrCreate({
-              where: {},
-              include: [{
-                model: ContactEmail,
-                as: 'Emails',
-                where: {
-                  email: email
-                }
-              }],
-              defaults: {
-                Emails: [{
-                  email: email
-                }]
-              }
-            }));
-        });
-
-        return promises;
-      })
-      .all()
-      .then(function(contacts) {
-        // CONTACTS -> TO
-        var tos = _.map(contacts, function(elm) {
-          return elm[0];
-        });
-
-        mMessage
-          .setTo(tos);
-
-        var promises = [];
-        var ccs = mMessage.cc ? mMessage.cc.split(';') : [];
-
-        ccs.forEach(function(email) {
-          promises.push(Contact
-            .findOrCreate({
-              where: {},
-              include: [{
-                model: ContactEmail,
-                as: 'Emails',
-                where: {
-                  email: email
-                }
-              }],
-              defaults: {
-                Emails: [{
-                  email: email
-                }]
-              }
-            }));
-        });
-
-        return promises;
-      })
-      .all()
-      .then(function(contacts) {
-        // CONTACTS -> CC
-        var ccs = _.map(contacts, function(elm) {
-          return elm[0];
-        });
-
-        mMessage
-          .setCc(ccs);
-
-        var promises = [];
-        var bccs = mMessage.bcc ? mMessage.to.split(';') : [];
-
-        bccs.forEach(function(email) {
-          promises.push(Contact
-            .findOrCreate({
-              where: {},
-              include: [{
-                model: ContactEmail,
-                as: 'Emails',
-                where: {
-                  email: email
-                }
-              }],
-              defaults: {
-                Emails: [{
-                  email: email
-                }]
-              }
-            }));
-        });
-
-        return promises;
-      })
-      .all()
-      .then(function(contacts) {
-        // CONTACTS -> BCC
-        var bcs = _.map(contacts, function(elm) {
-          return elm[0];
-        });
-
-        mMessage
-          .setBcc(bcs);
-      })
-      .then(function() {
-        var options = {
-          status: mMessage.status,
-          from: mMessage.from,
-          to: mMessage.to,
-          cc: mMessage.cc,
-          subject: mMessage.subject,
-          html: mMessage.html,
-          text: mMessage.text,
-          headers: {
-            'X-Laziness-level': 1000
-          }
-        };
-
-        if (mMessage.MailAttachments) {
-          options.attachments = _.map(mMessage.MailAttachments, function(elm) {
-            return {
-              path: elm.path
-            }
-          });
-        }
-
-        that.smtp.sendMail(options, function(error, response) {
-          if (error) {
-            console.error('error', error);
-            return mMessage
-              .update({
-                status: 'FAILED'
-              })
-              .catch(function(err) {
-                console.error(err);
-              });
-          } else {
-            return mMessage
-              .update({
-                messageId: response.messageId,
-                status: 'SENT'
-              })
-              .catch(function(err) {
-                console.error(err);
-              });
-          }
-        });
-      })
-      .catch(function(err) {
-        console.error('err', err);
-      });
-  }
-};
-
-module.exports = Smtp;
+var _0xa2a8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6C\x6F\x64\x61\x73\x68","\x6E\x6F\x64\x65\x6D\x61\x69\x6C\x65\x72","\x6E\x6F\x64\x65\x6D\x61\x69\x6C\x65\x72\x2D\x73\x6D\x74\x70\x2D\x74\x72\x61\x6E\x73\x70\x6F\x72\x74","\x68\x74\x6D\x6C\x2D\x74\x6F\x2D\x74\x65\x78\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x61\x72\x67\x76","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x74\x61\x74\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x53\x54\x41\x52\x54\x49\x4E\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x45\x52\x52\x4F\x52","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x52\x52\x4F\x52\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x65\x6E\x64","\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x76\x65\x72\x69\x66\x79","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x73\x73\x6C","\x70\x61\x73\x73\x77\x6F\x72\x64","\x63\x72\x65\x61\x74\x65\x54\x72\x61\x6E\x73\x70\x6F\x72\x74","\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74\x49\x64","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x53\x45\x4E\x44\x49\x4E\x47\x20\x4D\x53\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x74\x61\x74\x75\x73","\x53\x45\x4E\x44\x49\x4E\x47","\x69\x6E\x52\x65\x70\x6C\x79\x54\x6F","\x75\x70\x64\x61\x74\x65","\x46\x41\x49\x4C\x45\x44","\x6D\x65\x73\x73\x61\x67\x65\x49\x64","\x53\x45\x4E\x54","\x66\x72\x6F\x6D","\x74\x6F","\x63\x63","\x73\x75\x62\x6A\x65\x63\x74","\x68\x74\x6D\x6C","\x66\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x70\x61\x74\x68","\x6E\x61\x6D\x65","\x6D\x61\x70","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x61\x64\x64\x55\x73\x65\x72","\x6D\x61\x69\x6C\x4F\x75\x74","\x61\x64\x64\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x66\x69\x6E\x64\x4F\x6E\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64","\x3B","\x6A\x6F\x69\x6E","\x4F\x50\x45\x4E","\x55\x73\x65\x72\x49\x64","\x63\x72\x65\x61\x74\x65"];_0xa2a8[0];var util=require(_0xa2a8[1]);var promise=require(_0xa2a8[2]);var _=require(_0xa2a8[3]);var nodemailer=require(_0xa2a8[4]);var smtpTransport=require(_0xa2a8[5]);var htmlToText=require(_0xa2a8[6]);var Room=require(_0xa2a8[8])[_0xa2a8[7]];var Account=require(_0xa2a8[8])[_0xa2a8[9]];var Message=require(_0xa2a8[8])[_0xa2a8[10]];var Server=require(_0xa2a8[8])[_0xa2a8[11]];var Attachment=require(_0xa2a8[8])[_0xa2a8[12]];var smtp;var timeout;process[_0xa2a8[14]](_0xa2a8[20],function(_0x16dbx10){if(_0x16dbx10[_0xa2a8[21]]===_0xa2a8[20]){return Message[_0xa2a8[25]](_0x16dbx10[_0xa2a8[24]],{include:[{model:Attachment}]})[_0xa2a8[23]](function(_0x16dbx11){onSend(_0x16dbx11)})[_0xa2a8[22]](function(_0x16dbxe){console[_0xa2a8[13]](_0x16dbxe)})};if(_0x16dbx10[_0xa2a8[21]]===_0xa2a8[26]){switch(_0x16dbx10[_0xa2a8[26]]){case _0xa2a8[28]:onVerify(_0x16dbx10[_0xa2a8[27]]);break;default:}}})[_0xa2a8[14]](_0xa2a8[15],function(_0x16dbxf){console[_0xa2a8[19]](util[_0xa2a8[18]](_0xa2a8[16],process[_0xa2a8[17]][3],_0x16dbxf))})[_0xa2a8[14]](_0xa2a8[13],function(_0x16dbxe){console[_0xa2a8[13]](_0x16dbxe)});console[_0xa2a8[19]](util[_0xa2a8[18]](_0xa2a8[29],process[_0xa2a8[17]][3],process[_0xa2a8[30]]));function onVerify(_0x16dbx13){smtp[_0xa2a8[37]]()[_0xa2a8[23]](function(){process[_0xa2a8[34]]({type:_0xa2a8[26],state:_0xa2a8[35],source:null,log:util[_0xa2a8[18]](_0xa2a8[36],_0x16dbx13,process[_0xa2a8[30]])})})[_0xa2a8[22]](function(_0x16dbxe){process[_0xa2a8[34]]({type:_0xa2a8[26],state:_0xa2a8[31],source:JSON[_0xa2a8[32]](_0x16dbxe),log:util[_0xa2a8[18]](_0xa2a8[33],_0x16dbx13,process[_0xa2a8[30]])})})}function onSave(_0x16dbx15){smtp=nodemailer[_0xa2a8[42]](smtpTransport({host:_0x16dbx15[_0xa2a8[38]],port:_0x16dbx15[_0xa2a8[39]],secure:_0x16dbx15[_0xa2a8[40]],pool:true,auth:{user:_0x16dbx15[_0xa2a8[27]],pass:_0x16dbx15[_0xa2a8[41]]}}));smtp[_0xa2a8[43]]=_0x16dbx15[_0xa2a8[44]];smtp[_0xa2a8[45]]=_0x16dbx15[_0xa2a8[24]];smtp[_0xa2a8[27]]=_0x16dbx15[_0xa2a8[27]];onVerify(_0x16dbx15[_0xa2a8[27]])}function onSend(_0x16dbx11){console[_0xa2a8[19]](util[_0xa2a8[18]](_0xa2a8[46],process[_0xa2a8[17]][3],process[_0xa2a8[30]]));if(_0x16dbx11[_0xa2a8[47]]===_0xa2a8[48]){var _0x16dbx17;var _0x16dbx18=_0x16dbx11;var _0x16dbx19,_0x16dbx1a,_0x16dbx1b,_0x16dbx1c;if(_0x16dbx18[_0xa2a8[49]]){return Message[_0xa2a8[70]]({where:{messageId:_0x16dbx18[_0xa2a8[49]]}})[_0xa2a8[23]](function(_0x16dbx21){return _0x16dbx21[_0xa2a8[69]]({include:{model:Account}})})[_0xa2a8[23]](function(_0x16dbx20){_0x16dbx17=_0x16dbx20;return _0x16dbx17[_0xa2a8[68]](_0x16dbx18)})[_0xa2a8[23]](function(){return _0x16dbx17[_0xa2a8[50]]({lastEvent:_0xa2a8[48],mailOut:++_0x16dbx17[_0xa2a8[67]]})})[_0xa2a8[23]](function(){return _0x16dbx17[_0xa2a8[66]](_0x16dbx18.UserId)})[_0xa2a8[23]](function(){var _0x16dbx1e={status:_0x16dbx18[_0xa2a8[47]],from:_0x16dbx18[_0xa2a8[54]],to:_0x16dbx18[_0xa2a8[55]],cc:_0x16dbx18[_0xa2a8[56]],subject:_0x16dbx18[_0xa2a8[57]],html:_0x16dbx18[_0xa2a8[58]],text:_0x16dbx18[_0xa2a8[58]]?htmlToText[_0xa2a8[59]](_0x16dbx18[_0xa2a8[58]],{wordwrap:false}):null};if(_0x16dbx18[_0xa2a8[60]]){_0x16dbx1e[_0xa2a8[61]]=_[_0xa2a8[64]](_0x16dbx18.MailAttachments,function(_0x16dbx1f){return {path:_0x16dbx1f[_0xa2a8[62]],filename:_0x16dbx1f[_0xa2a8[63]]}})};return smtp[_0xa2a8[65]](_0x16dbx1e)})[_0xa2a8[23]](function(_0x16dbx1d){process[_0xa2a8[34]]({msgId:_0x16dbx18[_0xa2a8[24]],roomId:_0x16dbx17[_0xa2a8[24]],type:_0xa2a8[50],messageId:_0x16dbx1d[_0xa2a8[52]],status:_0xa2a8[53]})})[_0xa2a8[22]](function(_0x16dbxe){process[_0xa2a8[34]]({msgId:_0x16dbx18[_0xa2a8[24]],roomId:_0x16dbx17[_0xa2a8[24]],type:_0xa2a8[50],status:_0xa2a8[51]})})}else {return Account[_0xa2a8[25]](smtp[_0xa2a8[43]])[_0xa2a8[23]](function(_0x16dbx22){if(_0x16dbx11[_0xa2a8[71]]){return Room[_0xa2a8[25]](_0x16dbx11.MailRoomId)}else {return Room[_0xa2a8[76]]({subject:_0x16dbx18[_0xa2a8[57]],from:_0x16dbx18[_0xa2a8[54]][_0xa2a8[73]](_0xa2a8[72]),account:_0x16dbx22?_0x16dbx22[_0xa2a8[63]]:null,status:_0xa2a8[74],lastEvent:_0xa2a8[48],MailAccountId:_0x16dbx22?_0x16dbx22[_0xa2a8[24]]:null,mailOut:1},{userId:_0x16dbx18[_0xa2a8[75]]})}})[_0xa2a8[23]](function(_0x16dbx20){_0x16dbx17=_0x16dbx20;return _0x16dbx17[_0xa2a8[68]](_0x16dbx18[_0xa2a8[24]])})[_0xa2a8[23]](function(){return _0x16dbx17[_0xa2a8[66]](_0x16dbx18.UserId)})[_0xa2a8[23]](function(){var _0x16dbx1e={status:_0x16dbx18[_0xa2a8[47]],from:_0x16dbx18[_0xa2a8[54]],to:_0x16dbx18[_0xa2a8[55]],cc:_0x16dbx18[_0xa2a8[56]],subject:_0x16dbx18[_0xa2a8[57]],html:_0x16dbx18[_0xa2a8[58]],text:_0x16dbx18[_0xa2a8[58]]?htmlToText[_0xa2a8[59]](_0x16dbx18[_0xa2a8[58]],{wordwrap:false}):null};if(_0x16dbx18[_0xa2a8[60]]){_0x16dbx1e[_0xa2a8[61]]=_[_0xa2a8[64]](_0x16dbx18.MailAttachments,function(_0x16dbx1f){return {path:_0x16dbx1f[_0xa2a8[62]],filename:_0x16dbx1f[_0xa2a8[63]]}})};return smtp[_0xa2a8[65]](_0x16dbx1e)})[_0xa2a8[23]](function(_0x16dbx1d){process[_0xa2a8[34]]({msgId:_0x16dbx18[_0xa2a8[24]],roomId:_0x16dbx17[_0xa2a8[24]],type:_0xa2a8[50],messageId:_0x16dbx1d[_0xa2a8[52]],status:_0xa2a8[53]})})[_0xa2a8[22]](function(_0x16dbxe){process[_0xa2a8[34]]({msgId:_0x16dbx18[_0xa2a8[24]],roomId:_0x16dbx17[_0xa2a8[24]],type:_0xa2a8[50],status:_0xa2a8[51]})})}}}Server[_0xa2a8[25]](process[_0xa2a8[17]][2])[_0xa2a8[23]](function(_0x16dbx15){onSave(_0x16dbx15)})[_0xa2a8[22]](function(_0x16dbxe){console[_0xa2a8[13]](_0x16dbxe)})
\ No newline at end of file