Mailgun Connector

Poveži Mailgun z Brevo prek Tajo za poenotenje transakcijskih in marketinških e-mailnih podatkov, sinhronizacijo dostavljenih dogodkov in metrik angažiranosti ter konsolidacijo e-mailne infrastrukture v enoten pogled strank.

Pregled

LastnostVrednost
PlatformaMailgun (by Sinch)
KategorijaE-mail marketing
Zahtevnost nastavitveEnostavna
Uradna integracijaNe
Sinhronizirani podatkiDogodki, stiki, dostavljivost, kampanje
Metoda avtentikacijeAPI Key (HTTP Basic Auth)

Funkcionalnosti

  • Sinhronizacija dostavljenih dogodkov – sledi dostavilnim, odbitim, odprtim in kliknjenim dogodkom
  • Metrike angažiranosti – sinhroniziraj stopnje odpiranja in klikov v atribute stikov Brevo
  • Upravljanje odbite pošte – samodejno zaustavi odklonjene naslove v Brevo
  • Obravnava pritožb – sinhroniziraj pritožbe glede neželene pošte za higieno seznamov
  • Ugled domene – sprljuj zdravje domene pošiljatelja in dostavljivost
  • Sledenje transakcijskim e-mailom – koreliraj transakcijska pošiljanja z marketinškimi podatki

Predpogoji

Preden začneš, se prepričaj, da imaš:

  1. Račun Mailgun s preverjeno domeno pošiljatelja
  2. API ključ Mailgun iz nadzorne plošče Mailgun
  3. Brevo račun z dostopom do API
  4. Tajo račun z dovoljenji za konektorje

Avtentikacija

Avtentikacija z API ključem

Mailgun za avtentikacijo uporablja HTTP Basic Auth z api kot uporabniškim imenom in tvojim API ključem kot geslom:

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

Vrste API ključev

Mailgun zagotavlja ključe pošiljanja za specifičen domeno in API ključe na ravni računa. Za operacije sporočil uporabi ključe pošiljanja domene, za upravljalne operacije pa API ključ računa.

Konfiguracija

Osnovna nastavitev

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

Preslikava polj

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

Končne točke API

Končna točkaMetodaOpis
https://api.mailgun.net/v3/{domain}/messagesPOSTPošiljanje e-mailnih sporočil
https://api.mailgun.net/v3/{domain}/eventsGETPoizvedba dnevnikov dogodkov
https://api.mailgun.net/v3/{domain}/bouncesGETSeznam odbite pošte
https://api.mailgun.net/v3/{domain}/complaintsGETSeznam pritožb
https://api.mailgun.net/v3/{domain}/unsubscribesGETSeznam odjav
https://api.mailgun.net/v3/{domain}/tagsGETSeznam oznak
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETPridobi statistiko oznak
https://api.mailgun.net/v3/listsGETSeznam poštnih list
https://api.mailgun.net/v3/domainsGETSeznam domen
https://api.mailgun.net/v4/address/validatePOSTPreveri e-mailni naslov

Regija EU

Za račune Mailgun v EU namesto https://api.mailgun.net za vse končne točke API uporabi https://api.eu.mailgun.net.

Primeri kode

Inicializacija konektorja

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

Pošiljanje sporočila prek 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.' }

Sinhronizacija e-mailnih dogodkov v 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
}

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

Sinhronizacija odbite pošte in pritožb

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

Omejitve hitrosti

Končna točkaOmejitevOpombe
Messages APIOdvisno od plana100/uro (brezplačno), neomejeno (plačljivo)
Events APINi izrecne omejitveUporabi paginacijo z največ 300 elementi
Validation APIGlede na planPlačilo po potrditvi
WebhooksV realnem časuBrez omejitve hitrosti pri dostavi
Suppressions APINi izrecne omejitveVelja standardno omejevanje hitrosti

Omejitve pošiljanja

Mailgun uveljavlja omejitve pošiljanja glede na tvoj plan in ugled domene. Nove domene začnejo z nižjimi omejitvami, ki se povečujejo z izboljšanjem ugleda pošiljatelja. Sprljuj statistike domene v nadzorni plošči Mailgun.

Odpravljanje težav

TežavaVzrokRešitev
401 UnauthorizedNeveljaven API ključPreveri API ključ v nadzorni plošči Mailgun
Domene ni preverjenaManjkajoči zapisi DNSDodaj zahtevane zapise TXT, CNAME, MX
Webhook ni prejetURL ni dostopenZagotovi, da je URL webhooks javno dosegljiv
Manjkajoči dogodkiPreozek časovni razponRazširi parametre begin/end
Nizka dostavljivostUgled domenePreveri statistike domene in avtentikacijo

Način odpravljanja napak

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

Najboljše prakse

  1. Preveri domene pošiljatelja – za optimalno dostavljivost zaključi preverjanje DNS
  2. Za dogodke uporabi webhooks – dostava webhooks v realnem času v primerjavi s anketiranjem Events API
  3. Proaktivno upravljaj odbito pošto – takoj zaustavi naslove s trdimi odbitnicami v Brevo
  4. Označi svoja sporočila – za kategorizacijo in analizo uspešnosti e-mailov uporabi oznake
  5. Sprljuj ugled domene – sledi metrikam dostavljivosti v nadzorni plošči Mailgun
  6. Preverjaj e-mailne naslove – pred dodajanjem v sezname Brevo preveri naslove

Varnost

  • HTTP Basic Auth – API ključ posredovan prek glave Authorization
  • Podpisi webhooks – preverjanje podpisa HMAC-SHA256
  • Preverjanje domene – DNS avtentikacija SPF, DKIM in DMARC
  • Dovoljevanje IP – na voljo za plane z namenskim IP
  • TLS šifriranje – vse končne točke API zahtevajo HTTPS
  • Rotacija ključev – periodično menjaj API ključe prek nadzorne plošče Mailgun

Povezani viri

Subscribe to updates

developer-docs

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

auto-detect
AI pomočnik

Živjo! Vprašajte me o dokumentaciji.