Сервіс 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 листів на день