Last active
January 7, 2019 15:30
-
-
Save Hydrock/557e3e6f40b9e5efeb5be8c1f1ed6f19 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
const nodemailer = require('nodemailer'); | |
const http = require('http'); | |
// const https = require('https'); // Этот модуль если запрос по протоколу https | |
const targetLink = 'http://nekrasovka.ru/afisha/19-01-2019/1224'; | |
const timePeriod = 1000 * 60 * 5; // будем проверять каждые 5 минут | |
let index; | |
function setMonitor () { | |
// Тут делаем запрос и формируем тело ответа | |
http.get(targetLink, (res) => { | |
// Так как тело ответа прилетает порциями, | |
// кладем все в массив и затем формируем строку ответа | |
let body = []; | |
res.on('data', function (chunk) { | |
body.push(chunk); | |
}); | |
// Проверяем наличение строки в ответе | |
res.on('end', () => { | |
body = Buffer.concat(body).toString(); | |
index = body.indexOf('Регистрация на мероприятие завершена'); | |
}); | |
}) | |
// Если в теле ответа есть строка 'Регистрация на мероприятие завершена', | |
// запускаем мониторинг еще раз, иначе пишем что пора регистрироваться! | |
if (index !== -1) { | |
setTimeout(() => { | |
console.log('Пока ничего нет...'); | |
// Запускаем пониторинг повторно | |
setMonitor(); | |
}, timePeriod); | |
} else { | |
console.log('Ура! Доступно! Скорее регайся!'); | |
// Отправляем тут письмо. | |
sendMail(mailOptions); | |
} | |
} | |
setMonitor(); | |
// HTML контент письма | |
const output = ` | |
<p>Срочно регистрируйся! 🤓</p> | |
<label>Вот тебе ссылка</label> | |
<a href="${targetLink}">${targetLink}</a> | |
`; | |
// Опции отправки почты | |
let mailOptions = { | |
from: '[email protected]', // почта отправителя | |
to: '[email protected]', // лист адресов получателей через запятую | |
subject: 'Срочное оповещение', // Заголовок письма | |
text: 'Срочно регистрируйся! 😨', // Текст письма если нет тела письма в html | |
html: output // html тело письма | |
}; | |
// Отправляет письмо | |
function sendMail(mailOptions) { | |
// Создаем обьект транспортера | |
// Авторизируемся | |
let smtpTransport; | |
try { | |
smtpTransport = nodemailer.createTransport({ | |
host: 'smtp.yandex.ru', | |
port: 465, | |
secure: true, // true для 465, false для других портов 587 | |
auth: { | |
user: "[email protected]", // почта пользователя для авторизации | |
pass: "secretPassword" // пароль пользователя | |
} | |
}); | |
} catch (e) { | |
return console.log('Ошибка: ' + e.name + ":" + e.message); | |
} | |
// Отправляем письмо | |
smtpTransport.sendMail(mailOptions, (error, info) => { | |
if (error) { | |
return console.log('Ошибка'); | |
} else { | |
console.log('Сообщение отправлено: %s', info.messageId); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment