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

Шаг 1. Настройка SendGrid

Зарегистрируйтесь в SendGrid и получите свой API-ключ. Теперь займитесь разработкой нескольких шаблонов в SendGrid. SendGrid имеет простой конструктор электронной почты с перетаскиванием, который упрощает добавление таких элементов, как изображения и кнопки. Вам также предоставляется возможность просматривать и редактировать HTML-код шаблона электронной почты. Вы также можете персонализировать свои электронные письма с помощью руля. У SendGrid есть отличная документация по рулям здесь.

Я разработал следующие три шаблона, по одному для проверки учетной записи пользователя, сброса пароля и подтверждения сброса пароля. Эти электронные письма в настоящее время используются в американском стартапе veniqa.com, который делает покупки популярных западных брендов доступными для населения восточных стран.

Как видите, я использовал {{{name}}} для персонализации шаблона электронной почты. Когда письмо будет отправлено, {{{name}}} будет заменено именем пользователя. Кроме того, кнопки Подтвердите свой адрес электронной почты и Сбросить пароль имеют персонализированные гиперссылки.

<a href="{{{confirm_account_url}}}">Verify your Email</a>

Шаг 2. Настройка Node.js

Используйте npm или yarn для установки пакета ‘@ sendgrid / mail’

npm install @sendgrid/mail --save

or

yarn add @sendgrid/mail

Шаг 3. Код

Внутри mailer.js я сначала создам объект JavaScript с именем templates с парами template_name и template_id. По моему опыту, лучше идентифицировать шаблон по уникальному имени, а не по идентификатору, потому что у вас может быть несколько версий шаблона электронной почты, и каждая версия имеет свой собственный идентификатор. Поэтому, если вы когда-нибудь решите использовать другую версию, вы можете просто заменить идентификатор.

Пока я занимаюсь этим, я также импортирую пакет @ sendgrid / mail и настрою его.

const sgMail = require("@sendgrid/mail");
sgMail.setApiKey("YOUR_API_KEY");
templates = {
    password_reset_confirm: "d-a02ad738dfc8404c8da016b46a754805",
    password_reset        : "d-e779dcfad7fb47e7be8d79bdfe75fb0c",
    confirm_account       : "d-68c570dd120044d894e07566bf951964",
};

Вы можете найти template_id на панели инструментов SendGrid. См. Выделенный текст ниже.

Следующим шагом является создание функции, которая будет принимать объект данных (который будет содержать информацию электронной почты) и отправлять электронное письмо. Вы можете видеть, что я передал настраиваемые поля с именами name, confirm_account_url и reset_password_url, которые будут использоваться для персонализации писем.

function sendEmail(data) {
   const msg = {
      to: data.receiver,
      from: data.sender,
      templateId: templates[data.templateName],
      dynamic_template_data: {
         name: data.name,
         confirm_account_url:  data.confirm_account__url,
         reset_password_url: data.reset_password_url
      }
   };
   sgMail.send(msg, (error, result) => {
      if (error) {
          console.log(error);
      } else {
          console.log("That's wassup!");
      }
   });
}

Собирая все вместе, у меня есть:

const sgMail = require("@sendgrid/mail");
sgMail.setApiKey("YOUR_API_KEY");
templates = {
    password_reset_confirm: "d-a02ad738dfc8404c8da016b46a754805",
    password_reset        : "d-e779dcfad7fb47e7be8d79bdfe75fb0c",
    confirm_account       : "d-68c570dd120044d894e07566bf951964",
};
function sendEmail(data) {
   const msg = {
      //extract the email details
      to: data.receiver,
      from: data.sender,
      templateId: templates[data.templateName],
      //extract the custom fields 
      dynamic_template_data: {
         name: data.name,
         confirm_account_url:  data.confirm_account__url,
         reset_password_url: data.reset_password_url
      }
    };
    //send the email
    sgMail.send(msg, (error, result) => {
      if (error) {
          console.log(error);
      } else {
          console.log("That's wassup!");
      }
    });
}
exports.sendEmail = sendEmail;

Теперь я создам еще один файл под названием demo.js и покажу вам, как легко отправить электронное письмо.

//import the mailer.js file we previously created
var sender = require("./mailer.js");
var data = {
   //name of the email template that we will be using
   templateName: "confirm_account",
   //sender's and receiver's email
   sender: "[email protected]",
   receiver: "[email protected]",   
   //name of the user
   name: "Arjun Bastola",
   //unique url for the user to confirm the account
   confirm_account_url: "www.veniqa.com/unique_url"
   
};
//pass the data object to send the email
sender.sendEmail(data);

Чтобы проверить, работает ли код, запустите файл demo.js.

node demo.js

Арджун Бастола - разработчик полного стека из Большого Нью-Йорка.