Mailgun konnektor

Csatlakoztasd a Mailgunt a Brevóhoz a Tajo segítségével a tranzakciós és marketing e-mail adatok egységesítéséhez, a kézbesítési események és elköteleződési mutatók szinkronizálásához, valamint az e-mail infrastruktúra konszolidálásához egyetlen ügyfélnézetbe.

Áttekintés

TulajdonságÉrték
PlatformMailgun (Sinch által)
KategóriaE-mail marketing
Telepítés bonyolultságaKönnyű
Hivatalos integrációNem
Szinkronizált adatokEsemények, Kapcsolatok, Kézbesíthetőség, Kampányok
Hitelesítési módszerAPI kulcs (HTTP Basic Auth)

Funkciók

  • Kézbesítési esemény szinkronizáció – Kézbesített, visszapattant, megnyitott és kattintott események követése
  • Elköteleződési mutatók – Megnyitási és kattintási arányok szinkronizálása Brevo kapcsolat-attribútumokba
  • Visszapattanás-kezelés – Visszapattant e-mail címek automatikus letiltása a Brevóban
  • Panaszkezelés – Spam panaszok szinkronizálása lista-higiéniához
  • Domain reputáció – A küldő domain állapotának és kézbesíthetőségének figyelése
  • Tranzakciós e-mail követés – Tranzakciós küldések korrelálása marketing adatokkal

Előfeltételek

Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:

  1. Egy Mailgun fiókkal ellenőrzött küldő domainnel
  2. Egy Mailgun API kulccsal a Mailgun Dashboardból
  3. Egy Brevo fiókkal API-hozzáféréssel
  4. Egy Tajo fiókkal konnektor jogosultságokkal

Hitelesítés

API kulcs hitelesítés

A Mailgun HTTP Basic Authentication-t használ api felhasználónévként és az API kulcsodat jelszóként:

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' ...

API kulcstípusok

A Mailgun domain-specifikus küldési kulcsokat és fiókszintű API kulcsokat biztosít. Domain-küldési kulcsokat használj üzenetküldési műveletekhez, fiókszintű API kulcsot a kezelési műveletekhez.

Konfiguráció

Alapbeállítás

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

Mezőleképezés

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 végpontok

VégpontMódszerLeírás
https://api.mailgun.net/v3/{domain}/messagesPOSTE-mail üzenetek küldése
https://api.mailgun.net/v3/{domain}/eventsGETEseménynaplók lekérdezése
https://api.mailgun.net/v3/{domain}/bouncesGETVisszapattanások listázása
https://api.mailgun.net/v3/{domain}/complaintsGETPanaszok listázása
https://api.mailgun.net/v3/{domain}/unsubscribesGETLeiratkozások listázása
https://api.mailgun.net/v3/{domain}/tagsGETCímkék listázása
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETCímke-statisztikák lekérése
https://api.mailgun.net/v3/listsGETLevelezőlisták listázása
https://api.mailgun.net/v3/domainsGETDomainek listázása
https://api.mailgun.net/v4/address/validatePOSTE-mail cím validálása

EU régió

EU alapú Mailgun fiókoknál használd a https://api.eu.mailgun.net címet a https://api.mailgun.net helyett az összes API végponthoz.

Kódpéldák

A konnektor inicializálása

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'
});

Üzenet küldése a Mailgun API-n keresztül

// 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.' }

E-mail események szinkronizálása a Brevóba

// 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
}

Mailgun webhookok kezelése

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');
});

Visszapattanások és panaszok szinkronizálása

// 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')
});
}

Ráta-korlátok

VégpontKorlátMegjegyzések
Messages APICsomagonként változó100/óra (ingyenes), korlátlan (fizetős)
Events APINincs explicit korlátLapozás, max. 300 elem
Validation APICsomag alapjánValidációnkénti díjszabás
WebhookokValós idejűNincs kézbesítési ráta-korlát
Suppressions APINincs explicit korlátStandard ráta-korlátozás érvényes

Küldési korlátok

A Mailgun küldési korlátokat alkalmaz a csomag és a domain reputáció alapján. Az új domainek alacsonyabb korlátokkal kezdenek, amelyek a küldői reputáció javulásával növekednek. Figyeld a domain statisztikákat a Mailgun dashboardon.

Hibaelhárítás

ProblémaOkMegoldás
401 UnauthorizedÉrvénytelen API kulcsEllenőrizd az API kulcsot a Mailgun dashboardon
Domain nincs ellenőrizveHiányzó DNS bejegyzésekAdj hozzá szükséges TXT, CNAME, MX bejegyzéseket
Webhook nem érkezettURL nem elérhetőGyőződj meg róla, hogy a webhook URL nyilvánosan elérhető
Hiányzó eseményekTúl szűk időtartományBővítsd a begin/end paramétereket
Alacsony kézbesíthetőségDomain reputációEllenőrizd a domain statisztikákat és hitelesítést

Hibakeresési mód

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

Legjobb gyakorlatok

  1. Ellenőrizd a küldő domaineket – Végezd el a DNS ellenőrzést az optimális kézbesíthetőségért
  2. Használj webhookokat eseményekhez – Valós idejű webhook kézbesítés az Events API lekérdezése helyett
  3. Kezelj proaktívan visszapattanásokat – Tiltsd le azonnal a kemény visszapattanásokat a Brevóban
  4. Jelöld meg az üzeneteket – Használj címkéket az e-mail teljesítmény kategorizálásához és elemzéséhez
  5. Figyeld a domain reputációt – Kövesd a kézbesíthetőségi mutatókat a Mailgun dashboardon
  6. Használj e-mail validálást – Validáld a címeket, mielőtt Brevo listákhoz adod őket

Biztonság

  • HTTP Basic Auth – API kulcs Authorization fejlécon keresztül átadva
  • Webhook aláírások – HMAC-SHA256 aláírás-ellenőrzés
  • Domain ellenőrzés – SPF, DKIM és DMARC DNS hitelesítés
  • IP engedélyezési lista – Dedikált IP csomagoknál elérhető
  • TLS titkosítás – Minden API végpont HTTPS-t igényel
  • Kulcs rotáció – Forgasd rendszeresen az API kulcsokat a Mailgun dashboardon

Kapcsolódó források

Subscribe to updates

developer-docs

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

auto-detect
AI asszisztens

Szia! Kérdezz bármit a dokumentációról.