Ознакомьтесь со всеми другими моими сообщениями в разделе Мои технические статьи.
Как бэкэнд-разработчик, мы все доходим до того, что нам нужно отправлять электронную почту с сервера на клиент. В этой статье я покажу вам, как это сделать с помощью 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, приглашения календаря, вложения и многое другое.
Ознакомьтесь с их документацией, чтобы узнать, как использовать их в параметрах почты.
Хорошего дня!