Перейти до основного вмісту

Сервіс SendGrid

При надсиланні листів через пакет nodemailer ми можемо зіткнутися з певними труднощами. Це і попадання наших листів до папки спаму та відхилення поштовими серверами наших повідомлень. Ми обмежені пропускною спроможністю сервісу через який ми надсилаємо наші листи. Обмеження на обробку великих обсягів, у нашому випадку сервіс meta.ua надає надсилання лише 200 листів на день. Виникають проблеми аналітики, відстеження email продуктивності, читання листів користувачами, чи досягли листа призначення і т.д. і т.п.

Вихід переважно використовувати сторонню службу розсилки, яка візьме на себе, вирішення зазначених проблем. На ринку пропонується чимало сервісів для розсилок та надсилань листів. Це і популярний Amazon Simple Email Service та Mailgun перераховувати їх можна довго. Усі мають свої переваги та засоби SDK для розробників. Для демонстрації ми оберемо популярний сервіс SendGrid від компанії Twilio

Реєструємось у сервісі (при реєстрації можна вказати будь-яку компанію). Після реєстрації перейдіть до меню Settings і виберіть API Keys. Натисніть кнопку Create API Key. Вкажіть ім'я ключа та створіть. У вікні ви побачите API key. Скопіюйте собі його (клацніть мишкою по ключу) і запам'ятайте, він знадобиться вам для виконання домашнього завдання.

У принципі, ми готові надсилати листи. Достатньо докладна документація допоможе нам у цьому прочитайте її

Нам необхідно лише встановити бібліотеку

npm install --save @sendgrid/mail

Сама відправка тривіальна

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const msg = {
to: 'test@example.com',
from: 'test@example.com',
subject: 'Sending with SendGrid is Fun',
text: 'and easy to do anywhere, even with Node.js',
html: '<strong>and easy to do anywhere, even with Node.js</strong>',
};

sgMail
.send(msg)
.then(() => {
console.log('Email sent');
})
.catch(error => {
console.error(error);
});

У змінному оточенні SENDGRID_API_KEY ми будемо зберігати API key що ​​ми заздалегідь створили. В об'єкті msg поле to поставте діючу адресу електронної пошти, куди ми хочемо доставити ваше повідомлення. Змініть from значення на адресу, яку ви вказали під час реєстрації. Щоб відправити повідомлення, передайте цей об'єкт як аргумент методу send() екземпляра бібліотеки sgMail

Також можете ознайомитися з працюючим прикладом. Це попередній приклад для надсилання листів, але використовує він сервіс SendGrid, а не пакет Nodemailer

інформація

Обмеження з надсилання листів, для безкоштовного плану, у SendGrid ще жорсткіше, всього 100 листів на день