Nodemailer

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

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.

Рекомендаций