logo
Web
Максим Колмогоров
Максим Колмогоров
VK

Показываем как отправить Email с помощью Node.js и TypeScript

Отправляем письма на Node.js и TypeScript с помощью SMTP Google и Яндекса.

Показываем как отправить Email с помощью Node.js и TypeScript

Установка Nodemailer

Автор статьи надеется, что TypeScript проект у Вас уже инициализирован, если нет, то подготовьте среду разработки самостоятельно. Автор использует Nitro в качестве сервера и Node.js 18.16.0.

Отправлять письма мы будем с помощью библиотеки Nodemailer. Давайте ее установим:

npm install nodemailer

И раз мы используем TypeScript, то не забываем установим типы:

npm install --save @types/nodemailer

Пример отправки письма

Нам нужно импортировать пакет Nodemailer в наш код и написать пару функций:

примера кода отправки email в nodejs

Если смотреть сверху вниз (от первой и до пятой стрелки на картинке): 

  • Сначала мы импортировали нужный нам пакет;
  • Далее вызвали функцию createTransport() из нашей библиотеки. В ней указываем какой SMTP сервис будем использовать для отправки письма: в данный момент это gmail. В user пишем логин от почты, а в pass пишем пароль приложения. Пароль приложения - это не пароль от почты, это совсем другая вещь. Получить его можно тут. Единственное условие, на Вашем Google аккаунте должна быть включена двухфакторная аутентификация;
  • Мы пишем от кого и куда будет отправлено письмо. Также, заполняем тело письма. Внимание, не важно что напишите во from, там всегда будет указан Ваш логин как отправитель в любом письме. Такая политика у Google;
  • Тут мы обернули в Promise функцию sendMail(). Туда мы передали все что написали в прошлом пункте;
  • Вызвали нашу функцию, тем самым отправив письмо.

Если все сделали верно, то получите сообщение на указанную Вами почту:

полученное письмо
Так отображается письмо в Gmail, которое мы себе отослали.

Код:

Как отправить письмо через Яндекс SMTP

Для этого нужно немного модифицировать объект, который мы передаем в функцию createTransport():

const transporter = nodemailer.createTransport({
  service: 'yandex',
  auth: {
    user: 'login',
    pass: 'pass'
  }
})

Вместо gmail в service указываем yandex. В user указываем логин от почты без @yandex.ru, а пароль нужно сгенерировать тут. Это тоже пароль для приложений как и в Gmail.

Разработка сайта
Получите персональную стоимость на разработку сайта сегодня
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Оставьте комментарий

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Нет комментариев