Advertisement
Guest User

Nodemailer

a guest
Aug 15th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var News = require('mongoose').model('News'),
  2.     fs = require('fs'),
  3.     Bulletin = require('mongoose').model('Bulletin'),
  4.     Lang = require('mongoose').model('Languages'),
  5.     nodemailer = require('nodemailer');
  6.  
  7. module.exports = {
  8.     createNews: function (req, res, next) {
  9.         News.create(req.body, function (err, news) {
  10.             if (err) {
  11.                 console.log('Failed to register new news: ' + err);
  12.                 res.status(500).end();
  13.                 return;
  14.             }
  15.  
  16.             Lang.find({}).exec(function (err, collection) {
  17.                 if (err) {
  18.                     res.status(500).end();
  19.                     return;
  20.                 }
  21.                 collection.forEach(function (lang) {
  22.                     Lang.update({lang: lang.lang}, {$push: {'words': {phraseBG: news.title, phrase: ""}}}, function (err) {
  23.                         if (err) {
  24.                             res.status(500).end();
  25.                             return;
  26.                         }
  27.                     });
  28.                     Lang.update({lang: lang.lang}, {$push: {'words': {phraseBG: news.description, phrase: "", html: 1}}}, function (err) {
  29.                         if (err) {
  30.                             res.status(500).end();
  31.                             return;
  32.                         }
  33.                     });
  34.                 })
  35.             })
  36.  
  37.             Bulletin.find({}).exec(function (err, collection) {
  38.                 if (err) {
  39.                     console.log('Subscriptions could not be loaded: ' + err);
  40.                     res.status(500).end();
  41.                     return;
  42.                 }
  43.  
  44.                 var smtpConfig = {
  45.                     host: 'smtp.gmail.com',
  46.                     port: 465,
  47.                     secure: true,
  48.                     auth: {
  49.                         user: 'tuka emaila pishesh',
  50.                         pass: 'tuka parolata pishesh'
  51.                     }
  52.                 };
  53.  
  54.                 var transporter = nodemailer.createTransport(smtpConfig);
  55.  
  56.                 var description = '<div style="background-color:#eeeeee;margin:0 auto;background: url(http://blagoevgrad.herokuapp.com/img/bckg.jpg) no-repeat center center fixed;-webkit-background-size: cover;-moz-background-size: cover;-o-background-size: cover;padding-top: 50px;padding-bottom: 50px;background-size: cover;">' +
  57.                             '<div style="background-color: #eee;width: 70%;margin: 0 auto;padding: 15px;">' +
  58.                             '<img alt="" src="https://blagoevgrad.herokuapp.com/img/logo.png" style="height:100px;width:100px;float:left;margin-right:10px;margin-bottom:10px;"><h2>' + req.body.title + '</h2><p>' + req.body.description + '</p><p><a href="https://blagoevgrad.herokuapp.com/#/news" target="_blank">https://blagoevgrad.herokuapp.com/#/news</a></p>' +
  59.                             '</div>' +
  60.                             '<div style="height: 25px;background: #323232;width: 70%;padding: 0 15px;text-align: center;margin: 0 auto;color: #fff;line-height: 2;">© Някои права запазени | Благоевград</div>' +
  61.                             '</div>';
  62.  
  63.                 var plainDescription = description.replace(/<[^>]*>/g, '');
  64.  
  65.                 collection.forEach( function (subscription) {
  66.                     var mailOptions = {
  67.                         from: '"Благоевград - Новини" <emil12543@gmail.com>',
  68.                         to: subscription.email,
  69.                         subject: req.body.title,
  70.                         text: plainDescription,
  71.                         html: description
  72.                     };
  73.  
  74.                     transporter.sendMail(mailOptions, function(error, info){
  75.                         if(error){
  76.                             return console.log(error);
  77.                         }
  78.                         console.log('Message sent: ' + info.response);
  79.                     });
  80.                 });
  81.             })
  82.  
  83.             res.send(news);
  84.         });
  85.     },
  86.     getAllNews: function (req, res, next) {
  87.         News.find({}).exec(function (err, collection) {
  88.             if (err) {
  89.                 console.log('News could not be loaded: ' + err);
  90.                 res.status(500).end();
  91.                 return;
  92.             }
  93.  
  94.             res.send(collection);
  95.         })
  96.     },
  97.     updateNews: function (req, res, next) {
  98.         var updatedNewsData = req.body;
  99.  
  100.         News.update({_id: req.body._id}, updatedNewsData, function () {
  101.  
  102.             Lang.find({}).exec(function (err, collection) {
  103.                 if (err)
  104.                     console.log(err);
  105.                 collection.forEach(function (lang) {
  106.                     Lang.update({lang: lang.lang}, {$push: {'words': {phraseBG: updatedNewsData.title, phrase: ""}}}, function (err) {
  107.                         if (err)
  108.                             console.log(err);
  109.                     });
  110.                     Lang.update({lang: lang.lang}, {$push: {'words': {phraseBG: updatedNewsData.description, phrase: "", html: 1}}}, function (err) {
  111.                         if (err)
  112.                             console.log(err);
  113.                     });
  114.                 })
  115.             })
  116.             res.end();
  117.         });
  118.     },
  119.     deleteNews: function (req, res, next) {
  120.         News.findOneAndRemove({_id: req.params.id}, function () {
  121.             fs.unlinkSync('./public/img/uploads/' + req.params.id + '.jpg');
  122.             res.end();
  123.         });
  124.     }
  125. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement