В этой статье будет представлен краткий обзор того, как можно использовать 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
Арджун Бастола - разработчик полного стека из Большого Нью-Йорка.