Nodemailer: отправка email на JavaScript (Node.js)
Nodemailer — это самый популярный модуль для отправки электронных писем из приложений на Node.js. Он предоставляет простой и гибкий API для работы с различными почтовыми сервисами (SMTP, Gmail, Outlook, SendGrid и другими). Библиотека поддерживает HTML-шаблоны, вложения, потоки, а также безопасную аутентификацию через OAuth2.
Зачем нужен Nodemailer?
- Отправка транзакционных писем (подтверждение регистрации, восстановление пароля).
- Рассылка уведомлений и маркетинговых кампаний.
- Интеграция с формами обратной связи на сайте.
- Автоматическая отправка отчетов и логов.
Установка
Установите модуль через npm:
npm install nodemailerОсновные функции
- Транспорт — настройка SMTP-сервера или использование встроенных транспортов (Gmail, Mailgun, SendGrid).
- Форматирование письма — поддержка HTML, текста, вложений (файлы, изображения, PDF).
- Потоки — возможность отправлять большие файлы без загрузки в память.
- OAuth2 — безопасная аутентификация для Gmail и других провайдеров.
- Пул соединений — оптимизация производительности при массовой рассылке.
Пример кода на JavaScript (Node.js)
const nodemailer = require('nodemailer');
// Настройка транспорта (используем Gmail)
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-password' // или используйте App Password
}
});
// Параметры письма
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: 'Привет от Nodemailer!',
html: '<h1>Это тестовое письмо</h1><p>Отправлено через Node.js.</p>',
attachments: [{
filename: 'document.pdf',
path: './files/document.pdf'
}]
};
// Отправка
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log('Ошибка:', error);
}
console.log('Письмо отправлено:', info.response);
});Когда использовать Nodemailer?
Библиотека подходит для любых проектов на Node.js, где требуется отправка email: от небольших блогов до корпоративных систем. Nodemailer легко интегрируется с фреймворками (Express, Koa) и облачными сервисами. Если вам нужно отправлять письма с вложениями, HTML-версткой или через OAuth2 — это лучший выбор.
Обратите внимание: для продакшена рекомендуется использовать специализированные сервисы (SendGrid, Amazon SES) или SMTP-релеи, чтобы избежать блокировок. Nodemailer поддерживает все популярные провайдеры.