Guest User

Untitled

a guest
Sep 19th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const express = require('express');
  2. const unirest = require('unirest');
  3. const mimelib = require("mimelib");
  4. const app = express();
  5. const nodemailer = require('nodemailer');
  6. const base64 = require('base-64');
  7. const utf8 = require('utf8');
  8.  
  9. var transporter = nodemailer.createTransport({
  10.     service: 'Gmail',
  11.     auth: {
  12.         user: '4game.redirecter@gmail.com',
  13.         pass: 'test4game'
  14.     }
  15. });
  16.  
  17. let sendedIds = [];
  18.  
  19. let emails = [
  20.     'mrmike@artandcraftentertainment.com',
  21.     'raymond@artcraftent.com',
  22.     'samantha@artcraftent.com',
  23.     'morgan@artcraftent.com',
  24.     'max@artcraftent.com',
  25.     'bill@artcraftent.com',
  26.     'michael@artcraftent.com',
  27.     'tom@artcraftent.com'
  28. ];
  29. const output = '<b>4game Redirecter.</b> <br><br> Perform redirect emails from smtp-mock.test4game.com to your real mail <br><br> API: <br><br>1) /add?email=... <br><br>2) /print';
  30.  
  31.  
  32.  
  33. app.get('/', function (req, res) {
  34.        res.send(output);
  35. });
  36.  
  37. app.get('', function (req, res) {
  38.        res.send(output);
  39. });
  40.  
  41. app.get('/add', function (req, res) {
  42.     let obj = {};
  43.     obj.email = req.query.email;
  44.     obj.list = [];
  45.     emails.push(obj);
  46.  
  47.     res.send(`Email ${req.query.email} has been added.`);
  48. });
  49.  
  50. app.get('/delete', function (req, res) {
  51.     for(let i = 0; i < emails.length; i++) {
  52.         if(emails[i].email === req.query.email) {
  53.             emails.splice(i, 1);
  54.             break;
  55.         }
  56.     }
  57.     res.send(`Email ${req.query.email} has been deleted.`);
  58. });
  59.  
  60. app.get('/print', function (req, res) {
  61.     let output = '';
  62.  
  63.     emails.forEach(email => {
  64.         output += email + '<br>';
  65.     });
  66.  
  67.     res.send(output);
  68. });
  69.  
  70. app.listen(3001);
  71.  
  72. const checkSended = (id, created) => {
  73.     return sendedIds.indexOf(id) > -1 || Math.abs(new Date(created) - new Date()) > 86400000;
  74. };
  75.  
  76. const doRedirect = () => {
  77.     emails.forEach(email => {
  78.         console.log(`REQUEST https://smtp-mock.test4game.com/api/v2/search?kind=to&query=${email}`);
  79.         unirest.get(`https://smtp-mock.test4game.com/api/v2/search?kind=to&query=${email}`)
  80.             .headers({ })
  81.             .send({ })
  82.             .end((response) => {
  83.  
  84.                 for(let i = 0; i < response.body.items.length; i++) {
  85.                     const id = response.body.items[i].ID;
  86.                     const created = response.body.items[i].Created;
  87.                     const subject = mimelib.decodeMimeWord(response.body.items[i].Content.Headers.Subject[0]);
  88.                     let msg = '';
  89.                     if(response.body.items[i].Content.Headers["Content-Transfer-Encoding"][0] === 'base64') {
  90.                         msg = utf8.decode(base64.decode(response.body.items[i].Content.Body));
  91.                     }
  92.                     msg = mimelib.decodeQuotedPrintable(response.body.items[i].Content.Body);
  93.  
  94.                     if(checkSended(id, created) === false) {
  95.                         console.log(`Email with id ${id} was sended to ${email}`);
  96.                         transporter.sendMail({
  97.                             from: '4game.redirecter@gmail.com',
  98.                             to: email,
  99.                             subject: subject,
  100.                             html: msg
  101.                         });
  102.                         sendedIds.push(id);
  103.                     }
  104.                 }
  105.             });
  106.     });
  107.  
  108.     sleep();
  109. };
  110.  
  111. const sleep = () => {
  112.     setTimeout(doRedirect, 5000);
  113. };
  114.  
  115. doRedirect();
Add Comment
Please, Sign In to add comment