Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2016
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const nodemailer = require('nodemailer')
  2.     , smtpTransport = require('nodemailer-smtp-transport')
  3.     , fs = require('fs')
  4.  
  5. var smtpConfig = {
  6.     host: 'SSL0.OVH.NET',
  7.     port: 465,
  8.     secure: true, // use SSL
  9.     auth: {
  10.         user: 'ne-pas-repondre@x-one-france.com',
  11.         pass: 'FGJGTHNckulcvepo5523'
  12.     }
  13. };
  14.  
  15. //var transporter = nodemailer.createTransport('smtps://x.on.france%40gmail.com:MICHOmifroid@smtp.gmail.com')
  16. var transporter = nodemailer.createTransport(smtpConfig)
  17. class Mailer {
  18.  
  19.     constructor(mailTemplateLink, mailListLink) {
  20.         this.initConfig()
  21.         .then((config) => {
  22.             this.senderUserName = config.senderUserName
  23.             this.senderUserMail = config.senderUserMail
  24.             this.mailSubject = config.mailSubject
  25.             this.initMailTemplate(mailTemplateLink)
  26.             .then((mailTemplate) => {
  27.                 this.mailTemplate = mailTemplate
  28.                 this.initMailList(mailListLink)
  29.                 .then((mailList) => {
  30.                     this.mailList = mailList
  31.                     this.loop()
  32.                 })
  33.             })
  34.         })
  35.     }
  36.  
  37.     initConfig() {
  38.         return new Promise((resolve, reject) => {
  39.             fs.readFile('config/config.json', {encoding: 'utf-8'}, (err, data) => {
  40.                 if (!err) {
  41.                     var parsedData = JSON.parse(data)
  42.                     console.log('Configuration loaded')
  43.                     resolve(parsedData)
  44.                 } else {
  45.                     console.log(err)
  46.                     reject()
  47.                 }
  48.             })
  49.         })
  50.     }
  51.  
  52.     initMailTemplate(mailTemplateLink) {
  53.         return new Promise((resolve, reject) => {
  54.             fs.readFile(mailTemplateLink, {encoding: 'utf-8'}, (err, data) => {
  55.                 if (!err) {
  56.                     console.log('Mail template loaded')
  57.                     resolve(data)
  58.                 } else {
  59.                     console.log(err)
  60.                     reject()   
  61.                 }
  62.             })
  63.         })
  64.     }
  65.  
  66.     initMailList(mailListLink) {
  67.         return new Promise((resolve, reject) => {
  68.             fs.readFile(mailListLink, {encoding: 'utf-8'}, (err, data) => {
  69.                 if (!err) {
  70.                     var list = data.replace(/\s/g, " ").replace(/\s+/g, " ").split(" ").filter(function(e) { return e !== '' })
  71.                     console.log('Mail list loaded')
  72.                     resolve(list)
  73.                 } else {
  74.                     console.log(err)
  75.                     reject()   
  76.                 }
  77.             })         
  78.         })
  79.     }
  80.  
  81.     loop() {
  82.         for (let i = 0; i < this.mailList.length; i++) {
  83.             this.sendTo(this.mailList[i])
  84.         }
  85.         console.log('All mails have been sent')
  86.     }
  87.  
  88.     sendTo(address) {
  89.         var mailOptions = {
  90.             from: '"' + this.senderUserName + '" ' + '<' + this.senderUserMail + '>',
  91.             to: address,
  92.             subject: this.mailSubject,
  93.             html: this.mailTemplate
  94.         }
  95.         transporter.sendMail(mailOptions, (error, info) => {
  96.             if (error) {
  97.                 return console.log(error)
  98.             }
  99.             console.log('Message sent: ' + info.response)
  100.         })
  101.     }
  102.  
  103. }
  104.  
  105. /*
  106. ** ENTRY POINT
  107. */
  108.  
  109. if (process.argv.length !== 4) {
  110.     console.log('Usage : node index.js mail.html mail_list.txt')
  111.     process.exit(0)
  112. } else {
  113.     new Mailer(process.argv[2], process.argv[3])
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement