Почти каждому веб -приложению нужны функциональные возможности для отправки транзакционных электронных писем в ответ на различные триггеры. События, такие как регистрация учетной записи, сброс пароля, квитанции о покупке и проверка пользователей, являются одними из множества задач, которые необходимо выполнять сегодняшние приложения, которые необходимо выполнять по электронной почте. Эти электронные письма имеют решающее значение для уведомления пользователей о важных обновлениях и включения ключевых рабочих процессов пользователя в вашем приложении.
В этом сообщении рассматриваются три различных варианта отправки электронной почты из приложения Node.js. Я поделюсь плюсами и минусами каждого метода, чтобы вы могли выбрать лучший метод для ваших потребностей.
Как инструмент на стороне сервера, Node.js позволяет отправлять электронные письма, используя несколько различных параметров. Я предоставлю обзор трех основных вариантов-SMTP, API по электронной почте и многоканальной службы уведомлений-прежде чем погрузиться в технический учебник для каждого из них.
1. Использование SMTP
Простой протокол передачи почты (SMTP) — это технология для отправки исходящих электронных писем по сети и является наиболее распространенным методом транспорта. Он служит службой реле для отправки электронной почты с одного сервера на другой.
Когда вы отправляете электронное письмо другу, использующему такого почтового клиента, как Gmail, исходящий (SMTP) сервер поднимает его и подключается к серверу получающего вашего друга. Два сервера общаются с использованием руководящих принципов, определенных протоколом SMTP, определяя, кто является получателем и как они могут получить входящую почту. У почтовых клиентов обычно есть SMTP -сервер, связанный с ними, чтобы помочь в доставке электронной почты.
Преимущества использования SMTP
Основным преимуществом SMTP является то, что он широко принят и легко настроить и интегрировать в веб -приложение. Поставщики услуг электронной почты, которые я рассказываю ниже, может иметь больше функций, но их использование также означает полагаться на стороннего посредника для доставки ваших электронных писем. С SMTP вы получаете мелкозернистый контроль над каждым аспектом отправки электронной почты.
Недостатки использования SMTP
Основным недостатком SMTP является Это может быть небезопасным и легко взломанным Анкет Стандартный протокол SMTP подвержен атакам DDOS, фишингу и нарушениям данных. Если вы решите использовать свой собственный SMTP-сервер электронной почты, вы будете нести ответственность за долгосрочное обслуживание сервера, что требует больших постоянных усилий для безопасного поддержания.
Отправка электронных писем с SMTP также намного медленнее, чем использование сервиса API. SMTP требует обширной обратной стороны между серверами Mail SMTP для доставки сообщения. Даже тогда электронное письмо может не доставить без отзывов, если IP -адрес сервера включен в черный список или брандмауэр заблокировал порт. Это обратно и поля также означает несколько точек отказа.
2. Использование транзакционного API электронной почты
Транзакционные почтовые службы Позвольте вам отправлять электронную почту из вашего приложения с помощью размещенного API. Вместо того, чтобы самостоятельно управлять серверами электронной почты и их требования, вы можете использовать API электронной почты для обработки сборки сообщений, отправки и доставки. Транзакционные API по электронной почте пригодятся, когда вам нужен надежный сервис, который можно быстро интегрировать, может поддерживать большие объемы отправки и предлагает богатую функциональность.
На рынке есть много транзакционных почтовых услуг. Самые популярные включают Amazon Ses , Почтовый ямок , Sparkpost , SendGrid , Mailgun и MailChimp Transactional (ранее Mandrill). Все они являются платными услугами, хотя большинство предлагают бесплатные или недорогие вступительные планы.
Преимущества использования транзакционного API электронной почты
Основным преимуществом использования транзакционной почтовой службы является их очень легко настроить и просты в использовании, особенно с учетом того, что большинство сервисов поставляются с полной документацией. Они предоставляют мониторинг, например, поставляются ли электронные письма, а также веб -аналитика и отчеты, включая скорость отказов, открытие, клик и отслеживание отказа от подписки.
Другие ключевые преимущества использования API по электронной почте — это то, что они очень масштабируемые, они добавляют дополнительный уровень безопасности, используя ключи API, в отличие от метода SMTP, и они могут сэкономить вам значительное время и затраты, когда речь идет о постоянном обслуживании Анкет
Недостатки использования транзакционного API электронной почты
Основным недостатком использования размещенной услуги по электронной почте вместо SMTP вы полагаетесь на стороннюю сторону для обработки ваших электронных писем. Прежде чем выбрать поставщика, потратьте некоторое время Исследование Их функции, гарантированное время безотказной работы, показатели доставки электронной почты и документация по API.
Другой недостаток использования размещенной службы электронной почты вместо Многоканальная служба уведомлений (Что я освещаю ниже), если бы вашему приложению нужно было уведомлять пользователей по другим каналам, вам придется интегрировать каждый новый канал отдельно. Например, вам придется отдельно интегрировать мобильные и веб -push, SMS и чаты, такие как Slack и WhatsApp. Стоит ли весь дополнительный код и усилия, зависит от вас.
3. Использование многоканальной службы уведомлений
Услуги многоканальных уведомлений, такие как Курьер , позвольте вам охватить пользователей по ряду различных каналов, используя один униформ API. Они обычно позволяют вам принести своего собственного поставщика для каждого канала; В случае электронной почты это может быть ваш собственный SMTP -сервер или размещенный транзакционный API электронной почты.
С помощью многоканальной службы уведомлений вы можете легко добавить больше каналов или даже переключить поставщика услуг электронной почты, не касаясь вашего кода. Если вы хотите уведомить пользователей по электронной почте, SMS, Push или чатам, таких как Slack и WhatsApp, вы можете сделать это одним махом.
Курьер , в частности, дает вам дополнительную функциональность — в дополнение к тому, что вы получите с помощью транзакционной электронной почты. Вы можете разработать свои электронные письма в гибком редакторе визуального и кода, установить правила доставки и создавать простые рабочие процессы и отслеживать статус доставки в режиме реального времени.
Преимущества использования многоканальной службы уведомлений
Основным преимуществом использования многоканальной службы уведомлений является то, что вы можете легко начать отправлять уведомления из других каналов, таких как SMS, Push и Chat -приложения, используя тот же API. Это означает, что при интеграции нескольких сервисов есть меньше кода, и для добавления новых поставщиков канала или коммутаторов или переключателей.
Еще одно преимущество использования услуги, такого как Курьер Позволяет ли он нетехническим пользователям редактировать контент, стиль и даже брендинг исходящих электронных писем, не участвуя в разработчиках или развертывая код. Вы можете легко предварительно просмотреть свои электронные письма в курьере, используя фиктивные данные и безопасные уведомления об уведомлениях в отдельной тестовой среде, прежде чем подталкивать к производству.
Недостатки использования многоканальной службы уведомлений
Недостатки использования многоканальной службы уведомлений аналогичны непосредственному интеграции с транзакционным API электронной почты. Вы полагаетесь на третью сторону для управления вашей сборкой сообщений, отправки и доставки. Планируйте потратить время на исследование ваших вариантов и изучить продукт, прежде чем принять решение. Курьер имеет щедрый бесплатный план , который включает в себя 10000 уведомлений в месяц.
Учебное пособие: как отправить электронные письма с Nodemailer и SMTP
Nodemailer это модуль Node.js, используемый для отправки электронных писем, и является самым популярным пакетом электронной почты Node.js. Вы можете использовать Nodemailer для создания HTML или просто текстовых электронных писем, добавить вложения и отправлять свои электронные письма с помощью различных методов транспорта, включая встроенную поддержку SMTP. Требуется node.js 6.0 или новее.
Давайте пойдем, как отправить электронную почту с помощью Nodemailer. Первым шагом является создание приложения Node.js:
mkdir email-nodeapp && cd email-nodeapp npm init -y
Здесь вы создали папку и инициализировали Package.json
Файл с использованием npm init
командование -y
Флаг есть, чтобы пропустить интерактивные вопросы обратно и форута от NPM.
Далее установите модуль NodeMailer:
npm install nodemailer
Nodemailer’s CreateTransport
Функция указывает, какой метод вы хотите использовать для отправки электронной почты. Он принимает данные об соединении и учетные данные в качестве аргумента. В этом случае, поскольку SMTP является предпочтительным транспортом, вам нужно будет определить хост SMTP, порт и пароль учетных данных для доступа к хост -серверу SMTP.
Чтобы получить URL -адрес хоста, вам нужен SMTP -сервер. Для целей разработки вы можете использовать Mailtrap , или аналогичная служба, чтобы служить фальшивым SMTP -сервером. Поддельный SMTP -сервер позволяет вам не загромотить свою реальную учетную запись несколькими тестами, при этом видя, как ведут себя ваши тестовые электронные письма — все ли кнопки работают так, как они должны, форматирование все еще правильное после отправки и так далее.
Создайте учетную запись Mailtrap, если у вас ее еще нет. В выпадении интеграции на панели инструментов выберите Nodemailer и скопируйте отображаемые учетные данные.
Создать Email.js
файл и добавьте следующее:
const nodemailer = require('nodemailer'); let transporter = nodemailer.createTransport({ host: 'smtp.mailtrap.io', port: 2525, auth: { user: "", pass: " " } })
Замените хоста, пользователя и пароль на учетные данные Mailtrap, которые вы скопировали с приборной панели выше. Теперь вы можете отправить электронное письмо с помощью Sendmail
Метод Nodmailer’s CreateTransport
функция
Добавить следующее к Email.js
:
message = { from: "from-example@email.com", to: "to-example@email.com", subject: "Subject", text: "Hello SMTP Email" } transporter.sendMail(message, **function**(err, info) { if (err) { console.log(err) } else { console.log(info); }
Nodemailer также поддерживает отправку электронных писем с помощью HTML. Все, что вам нужно сделать, это добавить html
атрибут к вашему объекту сообщения так:
message = { from: "from@email.com", to: "to@email.com", subject: "Subject", html: "Hello SMTP Email
" }
Чтобы проверить, что это работает, перейдите на свой терминал и запустите:
node email.js
Зайдите на свою панель мониторинга Mailtrap, чтобы увидеть, как ваша электронная почта была получена.
Учебное пособие: как отправлять электронные письма с помощью транзакционного API электронной почты
Существует множество платформ электронной почты как услуга и API, такие как SendGrid и Mailgun , среди других. Для этой статьи я продемонстрирую отправку электронных писем из приложения узла с помощью SendGrid, что позволяет бесплатно отправлять до 100 электронных писем в месяц.
Чтобы начать отправку электронных писем с SendGrid, первый шаг — Зарегистрируйтесь для обслуживания. Затем вам нужно будет создать ключ SendGrid API для отправки электронной почты.
Чтобы создать клавишу API, перейдите к настройкам> клавиши API на панели панели SendGrid, затем нажмите «Создать клавишу API. «Дайте клавишу имя, выберите« Полный доступ », затем нажмите« Создать и просмотреть ». Скопируйте свой ключ API и сохраните его в безопасности для последующего использования.
Затем установите клиент SendGrid JavaScript с помощью NPM:
npm install --save @sendgrid/mail
Создайте файл в каталоге проекта с именем sendgrid.js
:
touch sendgrid.js
В sendgrid.js
Файл, добавьте следующие строки кода:
const sendgrid = require('@sendgrid/mail'); const SENDGRID_API_KEY = "" sendgrid.setApiKey(SENDGRID_API_KEY) const msg = { to: 'test@example.com', // Change to your recipient from: 'test@example.com', // Change to your verified sender subject: 'Sending with SendGrid Is Fun', text: 'and easy to do anywhere, even with Node.js', html: 'and easy to do anywhere, even with Node.js', } sendgrid .send(msg) .then((resp) => { console.log('Email sent\n', resp) }) .catch((error) => { console.error(error) })
Замените переменную Sendgrid_api_key
С помощью ключа API SendGrid, который вы создали ранее, и убедитесь, что адрес электронной почты в поле FID был проверен SendGrid. Вы можете сделать это, создав Личность отправителя Анкет Это подтверждает, что адрес электронной почты действительно принадлежит вам. Также замените адрес электронной почты в поле из test@example.com
к вашему получателю теста.
Чтобы проверить, что это работает, запустите:
node sendgrid.js
Чтобы увидеть, была ли ваша электронная почта доставлена, проверьте панель панели SendGrid, и на боковой панели выберите «Заявление». » Там вы должны увидеть только что отправленное письмо, которое вы только что отправили. SendGrid покажет вам, был ли он доставлен или нет, и был ли он открыт.
Учебное пособие: как отправлять электронные письма с помощью многоканальной службы уведомлений
Курьер это многоканальная платформа уведомлений, которая позволяет вам охватывать ваших пользователей на любом канале, используя один унифицированный API. С курьером вы можете принести Ваш собственный поставщик услуг электронной почты , в том числе SMTP или Gmail, или любой из популярных API по электронной почте, как SendGrid , Amazon Ses и Почтовый ямок Анкет
Чтобы начать использовать курьер, Создайте учетную запись Анкет Вы можете бесплатно отправлять до 10 000 уведомлений в месяц. Во время потока адаптации вам попросят дать курьеру разрешение отправки электронной почты от вашего имени из вашей учетной записи Gmail. Вы можете пропустить этот шаг, если планируете использовать другой ESP, но мы рекомендуем настроить его как самый быстрый способ проверить отправку из курьера.
Чтобы использовать курьера для отправки транзакционных электронных писем, отправляйтесь на приборную панель курьера и выберите Дизайнер в меню левша. Затем нажмите кнопку «Создать уведомление».
Выберите Gmail в модале выбора поставщика и нажмите «Продолжить».
Оттуда вы захотите добавить контент для вашего уведомления по электронной почте. Вы можете использовать панель инструментов для перетаскивания блоков для текста, изображений, кнопок и многого другого. Вы даже можете добавить Markdown или добавить кодовые блоки для дальнейшей настройки электронной почты.
Далее отправьте уведомление по электронной почте из Node.js с помощью Courier NPM -пакета @trycourier/courier
Анкет Чтобы установить его, запустите:
npm install @trycourier/courier
Создайте файл в каталоге приложений с именем courier.js
:
touch courier.js
Курьер автоматически генерирует фрагмент кода для вашего уведомления, который вы можете скопировать с вкладки «Отправить». Добавьте следующие строки кода в файл:
const { CourierClient } = require("@trycourier/courier"); const courier = CourierClient({ authorizationToken: "" }); courier.send({ eventId: " ", *// your Notification ID recipientId: " " }, data: {} *// optional variables for merging into templates }).then((resp) => { console.log('Email sent', resp) }) .catch((error) => { console.error(error) });
Курьерский пакет импортируется в файл, а курьерский клиент создается. Клиент принимает токен аутентификации, который вы можете получить из настройки Courier уведомления, созданных ранее. Нажмите на значок Gear из вашего уведомления и скопируйте токен Auth Masked Auth.
У курьера есть метод отправки, который принимает идентификатор события, который является либо Уведомление идентификатор или Пользовательское событие, которое вы наметили на свое уведомление . Идентификатор получателя должен быть уникальной строкой, которую вы можете использовать для идентификации получателя и поиска его в журналах данных. Обратите внимание, что Электронная почта
относится к адресу электронной почты получателя.
Чтобы проверить статус вашего электронного письма, отправляйтесь в Вкладка данных В вашей курьерской панели. Курьер расскажет вам, будет ли ваше электронное письмо доставлено, открыто и/или нажало. Курьер также скажет вам, есть ли какие -либо ошибки и когда они произошли.
Вывод
В этом руководстве мы исследовали методы отправки электронной почты в веб -приложении Node.js. Вы узнали, как использовать SMTP и Nodemailer, транзакционную службу электронной почты (в данном случае SendGrid) и службу многоканальных уведомлений (в данном случае, Courier ). Надеемся, что просмотр этих плюсов и минусов поможет вам выбрать лучший вариант для эффективной и безопасной отправки электронных писем в вашем веб -приложении.
Оригинал: «https://dev.to/courier/how-to-send-emails-with-node-js-49jc»