nodemailer

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

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

Начать курс

Библиотека Nodemailer: отправка email на JavaScript (Node.js)

Nodemailer — это самый популярный модуль для отправки электронных писем из приложений на Node.js. Он предоставляет простой, но мощный API для работы с различными почтовыми сервисами (SMTP, Gmail, Outlook, SendGrid, Amazon SES и др.). Библиотека поддерживает HTML-шаблоны, вложения, потоки данных, а также шифрование (SSL/TLS).

Зачем нужен Nodemailer?

В современной веб-разработке отправка email — базовая функциональность: регистрационные письма, сброс пароля, уведомления, рассылки. Nodemailer решает следующие задачи:

  • Универсальная работа с любым SMTP-сервером.
  • Поддержка HTML и текстовых сообщений.
  • Вложенные файлы (изображения, PDF, архивы).
  • Потоковая передача больших данных.
  • Интеграция с популярными сервисами (Gmail, Yandex, Mail.ru).

Установка

Установите модуль через npm:

npm install nodemailer

Для TypeScript дополнительно:

npm install @types/nodemailer

Основные функции

  • createTransport() — создание транспорта для подключения к почтовому серверу.
  • sendMail() — отправка письма с настройками (от, кому, тема, тело, вложения).
  • verify() — проверка соединения с сервером.
  • use() — подключение плагинов (например, для шаблонизации).

Пример кода на Node.js

const nodemailer = require('nodemailer');

// Настройка транспорта (пример для Gmail с App Password)
const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'your-email@gmail.com',
    pass: 'your-app-password' // Не обычный пароль, а пароль приложения
  }
});

// Функция отправки письма
async function sendEmail() {
  try {
    const info = await transporter.sendMail({
      from: '"Your Name" <your-email@gmail.com>',
      to: 'recipient@example.com',
      subject: 'Привет из Node.js!',
      html: '<h1>Тестовое письмо</h1><p>Отправлено через Nodemailer.</p>'
    });
    console.log('Письмо отправлено: %s', info.messageId);
  } catch (error) {
    console.error('Ошибка отправки:', error);
  }
}

sendEmail();

Когда использовать Nodemailer?

  • Регистрация и авторизация — отправка писем с подтверждением email.
  • Уведомления — оповещения о действиях пользователя (заказ, комментарий).
  • Рассылки — массовая отправка (но для больших объемов лучше использовать SendGrid/Mailgun).
  • Отладка — отправка писем в локальной среде (через Ethereal или Mailtrap).

Важно: Для продакшена используйте реальные SMTP-серверы (SendGrid, Amazon SES, Mailgun) или настройте свой почтовый сервер. Gmail имеет лимиты (500 писем/день) и требует пароль приложения.

Nodemailer — стандарт де-факто для отправки email в Node.js. Он прост, надежен и имеет большое сообщество.

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