Nodemailer: отправка email на JavaScript (Node.js)
Nodemailer — это самый популярный модуль для отправки электронных писем из приложений на Node.js. Он предоставляет простой и гибкий API для работы с SMTP-серверами, а также поддерживает HTML-шаблоны, вложения, потоковую передачу и множество транспортов (SMTP, Sendmail, Amazon SES и другие).
Зачем нужен Nodemailer?
В веб-приложениях часто требуется отправлять письма: регистрационные подтверждения, сброс пароля, уведомления, рассылки. Nodemailer позволяет делать это без лишних зависимостей, с поддержкой OAuth2, SSL/TLS и кодировок. Он работает асинхронно и не блокирует Event Loop.
Установка
Установите модуль через npm:
npm install nodemailerДля работы с Gmail или Яндекс.Почтой может потребоваться дополнительная настройка (пароль приложения или OAuth2).
Основные функции
- Отправка через SMTP, Sendmail, AWS SES, Mailgun, SendGrid
- Поддержка HTML и текстовых писем
- Вложения (файлы, изображения, Buffer, Stream)
- OAuth2 аутентификация (Gmail, Outlook)
- Пул соединений для массовой рассылки
- Шаблонизация (Handlebars, EJS интеграция)
Пример кода на JavaScript (Node.js)
Простой пример отправки письма через Gmail SMTP:
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-app-password'
}
});
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: 'Привет из Node.js',
html: '<h1>Тестовое письмо</h1><p>Отправлено через Nodemailer</p>'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('Ошибка:', error);
} else {
console.log('Письмо отправлено:', info.response);
}
});Когда использовать
Nodemailer подходит для любых Node.js-проектов, где нужна отправка email: от простых скриптов до корпоративных приложений. Он стабилен, хорошо документирован и поддерживается тысячами разработчиков. Если вам нужна массовая рассылка (newsletter) — лучше использовать специализированные сервисы (SendGrid, Mailchimp) через их API, но для transactional email Nodemailer — идеальный выбор.