Nodemailer: Отправка email на TypeScript
Nodemailer — это самый популярный модуль для отправки электронных писем из Node.js и TypeScript-приложений. Он позволяет легко интегрировать отправку email через SMTP, а также поддерживает HTML-шаблоны, вложения, потоки и множество транспортов (Gmail, Yandex, SendGrid и др.). Библиотека полностью совместима с TypeScript благодаря встроенным типам.
Зачем нужен Nodemailer?
В современной веб-разработке отправка email требуется для:
- Подтверждения регистрации (верификация)
- Восстановления пароля
- Уведомлений и рассылок
- Системных алертов
Nodemailer упрощает этот процесс, предоставляя единый API для любых почтовых сервисов.
Установка
npm install nodemailer
npm install -D @types/nodemailerДля TypeScript обязательно установите пакет с типами.
Основные функции
- SMTP-транспорт — отправка через любой SMTP-сервер (Gmail, Mail.ru, Яндекс, AWS SES).
- HTML и текст — поддержка как plain text, так и HTML-писем.
- Вложения — файлы, изображения, Buffer, потоки.
- Шаблонизация — интеграция с handlebars, pug и другими.
- Потоки — отправка больших файлов без загрузки в память.
- Пул соединений — повышение производительности при массовой рассылке.
Пример кода на TypeScript
import nodemailer from 'nodemailer';
interface MailOptions {
to: string;
subject: string;
text?: string;
html?: string;
}
async function sendEmail(options: MailOptions): Promise<void> {
// Создаём транспорт (пример для Gmail)
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-app-password'
}
});
// Настройки письма
const mailData = {
from: 'your-email@gmail.com',
to: options.to,
subject: options.subject,
text: options.text || '',
html: options.html || undefined
};
// Отправка
const info = await transporter.sendMail(mailData);
console.log('Письмо отправлено:', info.messageId);
}
// Использование
sendEmail({
to: 'user@example.com',
subject: 'Привет из TypeScript!',
html: '<h1>Добро пожаловать</h1><p>Это тестовое письмо.</p>'
});Когда использовать Nodemailer
Библиотека подходит для:
- Любых проектов на Node.js/TypeScript, где нужна отправка email.
- Прототипов и MVP — быстрая настройка через Gmail.
- Продакшен-систем — с использованием транзакционных сервисов (SendGrid, Mailgun).
- Микросервисов и serverless (Lambda, Cloud Functions).
Не рекомендуется использовать Nodemailer для массовых спам-рассылок — для этого есть специализированные ESP (Email Service Providers).
Заключение
Nodemailer — зрелая, стабильная и хорошо документированная библиотека. Благодаря TypeScript-типам вы получаете автодополнение и проверку ошибок на этапе компиляции. Это идеальный выбор для отправки email в экосистеме JavaScript/TypeScript.