Інтеграція Postmark для трансакційних email
Postmark спеціалізується виключно на трансакційній пошті (не розсилці) та гарантує доставку за 10 секунд. Вони використовують окремі пули IP для трансакційних та масових листів, що зберігає репутацію домена. Гарний вибір, якщо критична швидкість доставки — підтвердження платежів, скидання пароля.
Встановлення
npm install postmark
Відправлення через API
import * as postmark from 'postmark';
const client = new postmark.ServerClient(process.env.POSTMARK_SERVER_TOKEN!);
// Проста HTML відправлення
await client.sendEmail({
From: '[email protected]',
To: '[email protected]',
Subject: 'Ваше замовлення підтверджено',
HtmlBody: '<strong>Замовлення #12345 прийнято!</strong>',
TextBody: 'Замовлення #12345 прийнято!',
MessageStream: 'outbound', // трансакційний потік
});
Шаблони Postmark
Postmark зберігає шаблони на серверній стороні з синтаксисом Mustache:
// Відправлення за шаблоном (TemplateAlias з дашбордом Postmark)
await client.sendEmailWithTemplate({
From: '[email protected]',
To: user.email,
TemplateAlias: 'order-confirmation',
TemplateModel: {
customer_name: user.name,
order_id: order.id,
order_total: formatCurrency(order.total),
order_url: `https://app.example.com/orders/${order.id}`,
support_email: '[email protected]',
},
MessageStream: 'outbound',
});
Webhooks для подій доставки
// POST /api/webhooks/postmark
app.post('/api/webhooks/postmark', async (req, res) => {
const event = req.body as postmark.DeliveryWebhook | postmark.BounceWebhook;
if ('DeliveredAt' in event) {
// Подія доставки
await logEmailDelivered(event.MessageID, event.Recipient);
} else if ('Type' in event) {
// Подія bounce
if (event.Type === 'HardBounce') {
await markEmailInvalid(event.Email);
}
}
res.status(200).end();
});
Message Streams
Postmark розділяє потоки:
-
outbound— трансакційні листи (підтвердження замовлення, скидання пароля, рахунок-фактура) -
broadcast— маркетингові кампанії (потрібно явно створити в дашборді)
Це гарантує, що масова розсилка не испортить репутацію для трансакційних листів.
Строки реалізації
Інтеграція Postmark + шаблони + webhooks — 1–2 дня.







