Ознакомьтесь со всеми другими моими сообщениями в разделе Мои технические статьи.

Как бэкэнд-разработчик, мы все доходим до того, что нам нужно отправлять электронную почту с сервера на клиент. В этой статье я покажу вам, как это сделать с помощью nodemailer в Node.js.

Как только вы приобретете эти знания, вам не составит труда применить то, что вы узнали, к своему серверу Express. (спойлер: просто введите код в один из экспресс-маршрутов)

Что такое nodemailer?

nodemailer — это пакет Node, упрощающий отправку электронной почты в Node.

Во-первых, давайте поговорим о протоколе

Точно так же, как веб-сервер следует HTTP для передачи сообщений, существуют также протоколы для связи по электронной почте:

  • SMTP, Simple Mail Transfer Protocol, представляет собой набор рекомендаций по отправке электронных писем через Интернет. Это протокол, который мы будем использовать в этой статье.
  • IMAP, протокол доступа к сообщениям в Интернете, представляет собой набор рекомендаций по получению электронных писем с сервера. Дата, отправитель и тема изначально загружаются с сервера, а содержимое загружается только тогда, когда пользователь открывает сообщение.
  • POP3, протокол почтового отделения, представляет собой набор рекомендаций по получению электронной почты с сервера. 3 обозначает версию три, которая является наиболее широко используемой версией этого стандарта. POP3 известен своей низкой зависимостью от интернет-соединения. Он передает электронные письма с сервера на клиент, чтобы мы могли читать электронную почту, даже если мы не подключены к Интернету.

Если вас интересует более подробное сравнение, ознакомьтесь с разделом IMAP, POP3 и SMTP — полное сравнение.

Выполнение

Я обнаружил, что реализация nodemailer довольно проста. Так что просто взгляните на код напрямую:

Это не так страшно, правда?

То, что стоит вашего внимания

Gmail поставляется с бесплатным сервисом SMTP, но есть и недостатки.

Если у вас есть учетная запись Gmail, вы можете напрямую использовать эту учетную запись с nodemailer. Тем не менее, есть несколько недостатков для этого.

Во-первых, существует ограничение на исходящие электронные письма: 500 в день, и каждый получатель считается одним исходящим электронным письмом.

Во-вторых, Gmail имеет более безопасную аутентификацию. Когда вы запускаете свой код в производство, вполне вероятно, что рабочий сервер находится не там, где вы сейчас находитесь. Это, вероятно, в сотне миль отсюда или в другой стране. Google обнаружит эту разницу в местоположении и заблокирует такой вызов. Следовательно, использование Gmail в рабочей среде не рекомендуется. (в любом случае мы могли бы использовать его для обучения)

В производстве мы часто обращаемся к компаниям, предоставляющим услуги доставки почты, таким как SendInBlue и MailChimp.

Наконец вам может потребоваться настроить код приложения из центра учетных записей Google для использования в качестве пароля аутентификации в nodemailer. В противном случае вы, скорее всего, увидите сообщение об ошибке: Имя пользователя и пароль не приняты.

Порты 25, 467, 587, 2525 могут использоваться в качестве конечных точек связи.

Однако порт 467 устарел, а порт 25 часто блокируется поставщиком облачных услуг и интернет-провайдерами.

Это оставляет нам порты 587 и 2525. Первый используется наиболее широко, а второй обычно работает как альтернатива, когда порт 587 недоступен.

Nodemailer может рассылать содержимое в формате HTML, приглашения календаря, вложения и многое другое.

Ознакомьтесь с их документацией, чтобы узнать, как использовать их в параметрах почты.

Хорошего дня!