Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Подключение:
- // mail = require('modules/mail').mail,
- //-------------------------------------------
- // Использование:
- // mail(subject, mess, recipient, sender);
- //-------------------------------------------
- // Отправляем письмо на почту recipient от отправителя sender
- // Если recipient не указан, отправляем письмо на почту, указанную в config
- //-------------------------------------------
- const config = require('config'),
- nodemailer = require('nodemailer'),
- log = require('libs/log')(module),
- db = require('modules/db-find'),
- validator = require('validator'),
- SystemError = require('error/system').SystemError;
- function SendMail(subject, message, recipient = "", sender = "", emailLogin = "", emailPass = "") {
- // Достаем тип почты (gmail, yandex...)
- let emailType = config.get('email-login').split('@')[1].split('.')[0];
- // Проверяем, есть ли логин и пароль от почты
- let transporter = nodemailer.createTransport({
- service: emailType,
- auth: {
- user: emailLogin || config.get('email-login'),
- pass: emailPass || config.get('email-pass')
- }
- });
- // Если нет отправителя и получателя, то письмо отправляется само себе
- let mailOptions = {
- from: validator.isEmail(sender) || validator.isEmail(emailLogin) || config.get('email-login'),
- to: validator.isEmail(recipient) || validator.isEmail(emailLogin) || config.get('email-login'),
- subject: subject || 'Без темы',
- text: message || 'Нет сообщения'
- };
- transporter.sendMail(mailOptions, (err, info) => {
- if (err) { return new SystemError(500, err); }
- log.info('Message sent by email');
- });
- }
- function mail(subject, message, recipient, sender) {
- (async () => {
- // Достаем логин и пароль от почты
- let getBase = async () => { return await db.findOne('Setting'); };
- let base = await getBase();
- // Если базы нет, то будем использовать значения из конфига
- if (base) {
- new SendMail(subject, message, recipient, sender, base.emailLogin, base.emailPass);
- } else {
- new SendMail(subject, message, recipient, sender);
- }
- })().catch((err)=> {
- if (err) { return new SystemError(500, err); }
- });
- }
- exports.mail = mail;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement