/
kalugin66
/
FileBridge
Обзор
Документация
Войти
/
kalugin66
/
FileBridge
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
mail.js
92 строки
4 KB
Калугин Олег Александрович
upload files
24 янв 2026, 15:45
Верифицирован
24 янв 2026, 15:45
510c02d
Код
Авторство
О чём код?
const nodemailer = require('nodemailer'); const dotenv = require('dotenv'); dotenv.config(); class MailService { constructor() { this.transporter = nodemailer.createTransport({ host: process.env.YANDEX_SMTP_HOST, port: parseInt(process.env.YANDEX_SMTP_PORT), secure: process.env.YANDEX_SMTP_SECURE === 'true', auth: { user: process.env.YANDEX_EMAIL, pass: process.env.YANDEX_PASSWORD } }); } async sendMail(to, subject, text, html = null) { try { const mailOptions = { from: process.env.YANDEX_EMAIL, to, subject, text }; if (html) { mailOptions.html = html; } const info = await this.transporter.sendMail(mailOptions); console.log('Email sent:', info.messageId); return true; } catch (err) { console.error('Error sending email:', err); return false; } } async sendFileUploadNotification(userEmail, fileName, fileNumber, fileSize) { const subject = 'Файл успешно загружен'; const text = `Ваш файл "${fileName}" (№${fileNumber}, ${this.formatFileSize(fileSize)}) был успешно загружен в систему.`; const html = ` <h2>Файл успешно загружен</h2> <p>Ваш файл <strong>${fileName}</strong> был успешно загружен в систему.</p> <ul> <li>Номер файла: ${fileNumber}</li> <li>Размер: ${this.formatFileSize(fileSize)}</li> <li>Дата загрузки: ${new Date().toLocaleString()}</li> </ul> <p>Для скачивания используйте номер файла: ${fileNumber}</p> `; return await this.sendMail(userEmail, subject, text, html); } async sendAdminNotification(subject, message) { const adminEmail = process.env.mail; return await this.sendMail(adminEmail, subject, message); } async sendUserCreatedNotification(email, login, password, isAdmin = false) { const subject = 'Аккаунт создан'; const role = isAdmin ? 'Администратор' : 'Пользователь'; const html = ` <h2>Аккаунт создан</h2> <p>Ваш аккаунт в системе управления файлами был успешно создан.</p> <ul> <li>Логин: ${login}</li> <li>Пароль: ${password}</li> <li>Роль: ${role}</li> </ul> <p>Для входа перейдите по ссылке: <a href="${process.env.APP_URL}">${process.env.APP_URL}</a></p> <p><strong>Рекомендуется сменить пароль после первого входа.</strong></p> `; return await this.sendMail(email, subject, 'Ваш аккаунт создан', html); } formatFileSize(bytes) { if (bytes === 0) return '0 Bytes'; const k = 1024; const sizes = ['Bytes', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; } } module.exports = new MailService();