Mailgun konektor

Prepoj Mailgun s Brevo cez Tajo na zjednotenie transakčných a marketingových e-mailových dát, synchronizáciu udalostí doručovania a metrík zapojenia a konsolidáciu e-mailovej infraštruktúry do jednotného pohľadu na zákazníka.

Prehľad

VlastnosťHodnota
PlatformaMailgun (od Sinch)
KategóriaE-mailový marketing
Zložitosť nastaveniaĽahké
Oficiálna integráciaNie
Synchronizované dátaUdalosti, Kontakty, Doručiteľnosť, Kampane
Metóda autentifikácieAPI kľúč (HTTP Basic Auth)

Funkcie

  • Synchronizácia udalostí doručovania - Sleduj udalosti doručenia, odrazov, otvárania a klikania
  • Metriky zapojenia - Synchronizuj miery otvárania a klikania na atribúty kontaktov Brevo
  • Správa odrazov - Automaticky potlač adresy s odrazmi v Brevo
  • Spracovanie sťažností - Synchronizuj spamové sťažnosti pre hygienu zoznamu
  • Reputácia domény - Monitoruj zdravie odosielacej domény a doručiteľnosť
  • Sledovanie transakčných e-mailov - Koreluj transakčné odosielania s marketingovými dátami

Predpoklady

Predtým, než začneš, uisti sa, že máš:

  1. Mailgun účet s overenou odosielacou doménou
  2. Mailgun API kľúč z Mailgun Dashboard
  3. Brevo účet s API prístupom
  4. Tajo účet s oprávneniami konektora

Autentifikácia

Autentifikácia API kľúčom

Mailgun používa HTTP Basic Authentication s api ako používateľským menom a tvojím API kľúčom ako heslom:

Terminal window
# Get your API key from https://app.mailgun.com/settings/api_security
export MAILGUN_API_KEY=key-your-api-key
export MAILGUN_DOMAIN=your-domain.com
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
// HTTP Basic Auth format
const headers = {
'Authorization': `Basic ${Buffer.from(
`api:${process.env.MAILGUN_API_KEY}`
).toString('base64')}`
};
// Or using curl
// curl -s --user 'api:YOUR_API_KEY' ...

Typy API kľúčov

Mailgun poskytuje kľúče špecifické pre doménu na odosielanie a API kľúče na úrovni účtu. Použi kľúče na odosielanie domény pre operácie so správami a kľúč API účtu pre správcovské operácie.

Konfigurácia

Základné nastavenie

connectors:
mailgun:
enabled: true
api_key: "${MAILGUN_API_KEY}"
domain: "${MAILGUN_DOMAIN}"
region: "us" # or "eu" for EU region
sync:
events: true
contacts: true
bounces: true
complaints: true
schedule: "*/15 * * * *" # Every 15 minutes
webhook:
signing_key: "${MAILGUN_WEBHOOK_SIGNING_KEY}"
lists:
engaged: 30
bounced: 31
complained: 32

Mapovanie polí

field_mapping:
email: email
first_name: FIRSTNAME
last_name: LASTNAME
open_rate: MG_OPEN_RATE
click_rate: MG_CLICK_RATE
last_delivered: MG_LAST_DELIVERED
bounce_type: MG_BOUNCE_TYPE
engagement_score: MG_ENGAGEMENT
unsubscribed: MG_UNSUBSCRIBED

API endpointy

EndpointMetódaPopis
https://api.mailgun.net/v3/{domain}/messagesPOSTOdoslanie e-mailových správ
https://api.mailgun.net/v3/{domain}/eventsGETDopyt na záznamy udalostí
https://api.mailgun.net/v3/{domain}/bouncesGETZoznam odrazov
https://api.mailgun.net/v3/{domain}/complaintsGETZoznam sťažností
https://api.mailgun.net/v3/{domain}/unsubscribesGETZoznam odhlásení
https://api.mailgun.net/v3/{domain}/tagsGETZoznam tagov
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETŠtatistiky tagu
https://api.mailgun.net/v3/listsGETZoznam poštových zoznamov
https://api.mailgun.net/v3/domainsGETZoznam domén
https://api.mailgun.net/v4/address/validatePOSTOverenie e-mailovej adresy

EU región

Pre účty Mailgun v EÚ použi https://api.eu.mailgun.net namiesto https://api.mailgun.net pre všetky API endpointy.

Ukážky kódu

Inicializácia konektora

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('mailgun', {
apiKey: process.env.MAILGUN_API_KEY,
domain: process.env.MAILGUN_DOMAIN,
region: 'us'
});

Odoslanie správy cez Mailgun API

// Send an email using Mailgun's Messages API
const formData = new URLSearchParams();
formData.append('from', `Your App <noreply@${domain}>`);
formData.append('to', '[email protected]');
formData.append('subject', 'Welcome to our platform');
formData.append('html', '<h1>Welcome!</h1><p>Thanks for signing up.</p>');
formData.append('o:tag', 'welcome-email');
formData.append('o:tracking', 'yes');
const response = await fetch(
`https://api.mailgun.net/v3/${domain}/messages`,
{
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(`api:${apiKey}`).toString('base64')}`
},
body: formData
}
);
const result = await response.json();
// { id: '<[email protected]>', message: 'Queued. Thank you.' }

Synchronizácia e-mailových udalostí do Brevo

// Query Mailgun events and sync engagement data
const eventsResponse = await fetch(
`https://api.mailgun.net/v3/${domain}/events?` +
new URLSearchParams({
begin: lastSyncDate,
ascending: 'yes',
limit: 300,
event: 'delivered OR opened OR clicked'
}),
{
headers: {
'Authorization': `Basic ${Buffer.from(`api:${apiKey}`).toString('base64')}`
}
}
);
const { items, paging } = await eventsResponse.json();
for (const event of items) {
const email = event.recipient;
switch (event.event) {
case 'delivered':
await tajo.contacts.update(email, {
attributes: { MG_LAST_DELIVERED: event.timestamp }
});
break;
case 'opened':
await tajo.events.track({
email,
event: 'email_opened',
properties: { subject: event.message.headers.subject }
});
break;
case 'clicked':
await tajo.events.track({
email,
event: 'email_clicked',
properties: { url: event.url }
});
break;
}
}
// Follow pagination for more events
if (paging.next) {
// Fetch next page using paging.next URL
}

Spracovanie webhookov Mailgun

const crypto = require('crypto');
app.post('/webhooks/mailgun', async (req, res) => {
// Verify webhook signature
const { timestamp, token, signature } = req.body.signature;
const encodedToken = crypto
.createHmac('sha256', process.env.MAILGUN_WEBHOOK_SIGNING_KEY)
.update(timestamp.concat(token))
.digest('hex');
if (encodedToken !== signature) {
return res.status(401).send('Unauthorized');
}
const eventData = req.body['event-data'];
const event = eventData.event;
const email = eventData.recipient;
await tajo.connectors.handleWebhook('mailgun', {
topic: event,
payload: eventData
});
// Handle bounce suppression
if (event === 'failed' && eventData.severity === 'permanent') {
await tajo.contacts.update(email, {
attributes: { MG_BOUNCE_TYPE: 'hard_bounce' },
emailBlacklisted: true
});
}
res.status(200).send('OK');
});

Synchronizácia odrazov a sťažností

// Sync bounced addresses for list hygiene
const bouncesResponse = await fetch(
`https://api.mailgun.net/v3/${domain}/bounces?limit=100`,
{
headers: {
'Authorization': `Basic ${Buffer.from(`api:${apiKey}`).toString('base64')}`
}
}
);
const { items: bounces } = await bouncesResponse.json();
for (const bounce of bounces) {
await tajo.contacts.update(bounce.address, {
attributes: {
MG_BOUNCE_TYPE: bounce.error.includes('550') ? 'hard_bounce' : 'soft_bounce',
MG_BOUNCE_DATE: bounce.created_at
},
emailBlacklisted: bounce.error.includes('550')
});
}

Obmedzenia rýchlosti

EndpointLimitPoznámky
Messages APIZávisí od plánu100/hod (free), neobmedzené (platené)
Events APIBez explicitného limituPouži stránkovanie s max 300 položkami
Validation APIPodľa plánuPlatba za overenie
WebhookyV reálnom časeBez limitu rýchlosti pri doručovaní
Suppressions APIBez explicitného limituPlatí štandardné obmedzenie rýchlosti

Limity odosielania

Mailgun presadzuje limity odosielania podľa tvojho plánu a reputácie domény. Nové domény začínajú s nižšími limitmi, ktoré sa zvyšujú s rastom reputácie odosielateľa. Monitoruj štatistiky domény v Mailgun dashboarde.

Riešenie problémov

ProblémPríčinaRiešenie
401 UnauthorizedNeplatný API kľúčOverte API kľúč v Mailgun dashboarde
Doména nie je overenáChýbajú DNS záznamyPridaj požadované TXT, CNAME, MX záznamy
Webhook nebol prijatýURL nie je dostupnáUisti sa, že URL webhooku je verejne dostupná
Chýbajúce udalostiPríliš úzky časový rozsahRozšír parametre begin/end
Nízka doručiteľnosťReputácia doménySkontroluj štatistiky domény a autentifikáciu

Debug režim

connectors:
mailgun:
debug: true
log_level: verbose
log_webhooks: true
log_events: true

Odporúčané postupy

  1. Overuj odosielacie domény - Dokončí overenie DNS pre optimálnu doručiteľnosť
  2. Použi webhooky pre udalosti - Doručenie webhookov v reálnom čase oproti pollingu Events API
  3. Proaktívne spravuj odrazy - Okamžite potlač pevné odrazy v Brevo
  4. Taguj správy - Použi tagy na kategorizáciu a analýzu výkonu e-mailov
  5. Monitoruj reputáciu domény - Sleduj metriky doručiteľnosti v Mailgun dashboarde
  6. Použi overenie e-mailov - Overuj adresy pred pridaním do zoznamov Brevo

Bezpečnosť

  • HTTP Basic Auth - API kľúč prenášaný cez hlavičku Authorization
  • Podpisy webhookov - Overenie podpisov HMAC-SHA256
  • Overenie domény - DNS autentifikácia SPF, DKIM a DMARC
  • Whitelistovanie IP - Dostupné pre plány s dedikovanou IP
  • TLS šifrovanie - Všetky API endpointy vyžadujú HTTPS
  • Rotácia kľúčov - Rotuj API kľúče pravidelne cez Mailgun dashboard

Súvisiace zdroje

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asistent

Ahoj! Opýtajte sa ma na dokumentáciu.