Mailgun Konektor

Povežite Mailgun s Brevom putem Taja kako biste ujedinili vaše transakcijske i marketinške e-mail podatke, sinkronizirali događaje dostave i metrike angažmana te konsolidirali vašu e-mail infrastrukturu u jedinstven pogled na korisnika.

Pregled

SvojstvoVrijednost
PlatformaMailgun (by Sinch)
KategorijaE-mail marketing
Složenost postavljanjaJednostavno
Službena integracijaNe
Sinkronizirani podaciDogađaji, Kontakti, Isporučivost, Kampanje
Metoda autentifikacijeAPI ključ (HTTP Basic Auth)

Značajke

  • Sinkronizacija događaja dostave - Praćenje dostavljenih, vraćenih, otvorenih i kliknutih događaja
  • Metrike angažmana - Sinkronizacija stopa otvaranja i klikanja na Brevo atribute kontakata
  • Upravljanje vraćenim porukama - Automatska supresija vraćenih adresa u Brevo
  • Rukovanje pritužbama - Sinkronizacija pritužbi na spam za higijenu popisa
  • Reputacija domene - Praćenje zdravlja domene pošiljanja i isporučivosti
  • Praćenje transakcijskih e-mailova - Korelacija transakcijskih slanja s marketinškim podacima

Preduvjeti

Prije nego što počnete, osigurajte da imate:

  1. Mailgun račun s verificiranom domenom pošiljanja
  2. Mailgun API ključ iz Mailgun Dashboard-a
  3. Brevo račun s API pristupom
  4. Tajo račun s dozvolama konektora

Autentifikacija

Autentifikacija API ključem

Mailgun koristi HTTP Basic autentifikaciju s api kao korisničkim imenom i vašim API ključem kao lozinkom:

Terminal window
# Dohvatite vaš API ključ na 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
// Format HTTP Basic Auth
const headers = {
'Authorization': `Basic ${Buffer.from(
`api:${process.env.MAILGUN_API_KEY}`
).toString('base64')}`
};
// Ili koristeći curl
// curl -s --user 'api:YOUR_API_KEY' ...

Vrste API ključeva

Mailgun pruža ključeve za slanje specifične za domenu i API ključeve na razini računa. Koristite ključeve za slanje domene za operacije poruka i API ključ računa za upravljačke operacije.

Konfiguracija

Osnovna konfiguracija

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

Mapiranje polja

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 krajnje točke

Krajnja točkaMetodaOpis
https://api.mailgun.net/v3/{domain}/messagesPOSTSlanje e-mail poruka
https://api.mailgun.net/v3/{domain}/eventsGETUpit zapisnika događaja
https://api.mailgun.net/v3/{domain}/bouncesGETPopis vraćenih poruka
https://api.mailgun.net/v3/{domain}/complaintsGETPopis pritužbi
https://api.mailgun.net/v3/{domain}/unsubscribesGETPopis odjavljenih
https://api.mailgun.net/v3/{domain}/tagsGETPopis oznaka
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETDohvati statistike oznaka
https://api.mailgun.net/v3/listsGETPopis mailing lista
https://api.mailgun.net/v3/domainsGETPopis domena
https://api.mailgun.net/v4/address/validatePOSTValidacija e-mail adrese

EU regija

Za Mailgun račune s bazom u EU, koristite https://api.eu.mailgun.net umjesto https://api.mailgun.net za sve API krajnje točke.

Primjeri koda

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

Slanje poruke putem Mailgun API-ja

// Slanje e-maila koristeći Mailgun 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.' }

Sinkronizacija e-mail događaja u Brevo

// Upitajte Mailgun događaje i sinkronizirajte podatke o angažmanu
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;
}
}
// Pratite paginaciju za više događaja
if (paging.next) {
// Dohvatite sljedeću stranicu koristeći URL paging.next
}

Rukovanje Mailgun webhookovima

const crypto = require('crypto');
app.post('/webhooks/mailgun', async (req, res) => {
// Verificirajte potpis webhookova
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
});
// Rukujte supresijom vraćenih poruka
if (event === 'failed' && eventData.severity === 'permanent') {
await tajo.contacts.update(email, {
attributes: { MG_BOUNCE_TYPE: 'hard_bounce' },
emailBlacklisted: true
});
}
res.status(200).send('OK');
});

Sinkronizacija vraćenih poruka i pritužbi

// Sinkronizacija vraćenih adresa za higijenu popisa
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')
});
}

Ograničenja brzine

Krajnja točkaOgraničenjeNapomene
Messages APIOvisi o planu100/sat (besplatno), neograničeno (plaćeno)
Events APIBez eksplicitnog ograničenjaKoristite paginaciju s maks. 300 stavki
Validation APINa temelju planaPlaćanje po validaciji
WebhookoviU stvarnom vremenuBez ograničenja brzine na dostavu
Suppressions APIBez eksplicitnog ograničenjaPrimjenjuje se standardno ograničenje brzine

Ograničenja slanja

Mailgun primjenjuje ograničenja slanja na temelju vašeg plana i reputacije domene. Nove domene počinju s nižim ograničenjima koja se povećavaju kako se poboljšava vaša reputacija pošiljatelja. Pratite statistike vaše domene u Mailgun dashboardu.

Rješavanje problema

ProblemUzrokRješenje
401 UnauthorizedNevažeći API ključVerificirajte API ključ u Mailgun dashboardu
Domena nije verificiranaNedostaju DNS zapisiDodajte potrebne TXT, CNAME, MX zapise
Webhook nije primljenURL nije dostupanOsigurajte da je URL webhookova javno dostupan
Nedostaju događajiPreuzak raspon vremenaProširite parametre begin/end
Niska isporučivostReputacija domeneProvjerite statistike domene i autentifikaciju

Način otklanjanja grešaka

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

Preporučene prakse

  1. Verificirajte domene pošiljanja - Dovršite DNS verifikaciju za optimalnu isporučivost
  2. Koristite webhookove za događaje - Isporuka webhookova u stvarnom vremenu naspram anketiranja Events API-ja
  3. Proaktivno rukujte vraćenim porukama - Odmah supresirajte hard bounce adrese u Brevo
  4. Označite vaše poruke - Koristite oznake za kategorizaciju i analizu performansi e-maila
  5. Pratite reputaciju domene - Pratite metrike isporučivosti u Mailgun dashboardu
  6. Koristite validaciju e-maila - Validirajte adrese prije dodavanja na Brevo popise

Sigurnost

  • HTTP Basic Auth - API ključ prenesen putem zaglavlja Authorization
  • Potpisi webhookova - HMAC-SHA256 verifikacija potpisa
  • Verifikacija domene - SPF, DKIM i DMARC DNS autentifikacija
  • Lista dopuštenih IP-ova - Dostupno za planove s namjenskim IP-om
  • TLS šifriranje - Sve API krajnje točke zahtijevaju HTTPS
  • Rotacija ključeva - Periodično rotirajte API ključeve putem Mailgun dashboarda

Povezani resursi

Subscribe to updates

developer-docs

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

auto-detect
AI asistent

Bok! Pitajte me o dokumentaciji.