Conector Mailgun

Conectați Mailgun la Brevo prin Tajo pentru a vă unifica datele de e-mail tranzacțional și de marketing, a sincroniza evenimentele de livrare și metricile de implicare și a consolida infrastructura de e-mail într-o singură vizualizare a clientului.

Prezentare generală

ProprietateValoare
PlatformăMailgun (by Sinch)
CategorieMarketing prin e-mail
Complexitate configurareUșoară
Integrare oficialăNu
Date sincronizateEvenimente, Contacte, Livrabilitate, Campanii
Metodă autentificareCheie API (HTTP Basic Auth)

Funcționalități

  • Sincronizare evenimente livrare - Urmăriți evenimentele de livrare, respingere, deschidere și clic
  • Metrici de implicare - Sincronizați ratele de deschidere și clic la atributele de contact Brevo
  • Gestionare respingeri - Suprimați automat adresele respinse în Brevo
  • Gestionare reclamații - Sincronizați reclamațiile de spam pentru igienă listă
  • Reputație domeniu - Monitorizați sănătatea domeniului de trimitere și livrabilitatea
  • Urmărire e-mail tranzacțional - Corelați trimiterile tranzacționale cu datele de marketing

Cerințe preliminare

Înainte de a începe, asigurați-vă că aveți:

  1. Un cont Mailgun cu un domeniu de trimitere verificat
  2. O cheie API Mailgun din Tabloul de bord Mailgun
  3. Un cont Brevo cu acces API
  4. Un cont Tajo cu permisiuni connector

Autentificare

Autentificare cu cheie API

Mailgun utilizează HTTP Basic Authentication cu api ca nume de utilizator și cheia API ca parolă:

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

Tipuri de chei API

Mailgun oferă chei de trimitere specifice domeniului și chei API la nivel de cont. Utilizați cheile de trimitere domeniu pentru operațiunile de mesaje și cheia API de cont pentru operațiunile de management.

Configurare

Configurare de bază

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

Mapare câmpuri

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

Puncte finale API

Punct finalMetodăDescriere
https://api.mailgun.net/v3/{domain}/messagesPOSTTrimite mesaje e-mail
https://api.mailgun.net/v3/{domain}/eventsGETInterogă jurnalele de evenimente
https://api.mailgun.net/v3/{domain}/bouncesGETListează respingerile
https://api.mailgun.net/v3/{domain}/complaintsGETListează reclamațiile
https://api.mailgun.net/v3/{domain}/unsubscribesGETListează dezabonările
https://api.mailgun.net/v3/{domain}/tagsGETListează etichetele
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETObține statisticile etichetei
https://api.mailgun.net/v3/listsGETListează listele de corespondență
https://api.mailgun.net/v3/domainsGETListează domeniile
https://api.mailgun.net/v4/address/validatePOSTValidează adresa de e-mail

Regiune EU

Pentru conturile Mailgun din UE, utilizați https://api.eu.mailgun.net în loc de https://api.mailgun.net pentru toate punctele finale API.

Exemple de cod

Inițializare conector

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

Trimitere mesaj prin API Mailgun

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

Sincronizare evenimente e-mail la 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
}

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

Sincronizare respingeri și reclamații

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

Limite de rată

Punct finalLimităNote
Messages APIVariază în funcție de plan100/oră (gratuit), nelimitat (plătit)
Events APIFără limită explicităUtilizați paginarea cu max 300 articole
Validation APIBazat pe planPlată per validare
Webhook-uriTimp realFără limită de rată la livrare
Suppressions APIFără limită explicităSe aplică limitarea standard a ratei

Limite de trimitere

Mailgun aplică limite de trimitere bazate pe planul și reputația domeniului. Domeniile noi încep cu limite mai mici care cresc pe măsură ce reputația de expeditor se îmbunătățește. Monitorizați statisticile domeniului în tabloul de bord Mailgun.

Depanare

ProblemăCauzăSoluție
401 NeautorizatCheie API invalidăVerificați cheia API în tabloul de bord Mailgun
Domeniu neverificatÎnregistrări DNS lipsăAdăugați înregistrările TXT, CNAME, MX necesare
Webhook neprimitURL inaccesibilAsigurați că URL-ul webhook este accesibil public
Evenimente lipsăInterval de timp prea restrânsExtindeți parametrii begin/end
Livrabilitate scăzutăReputație domeniuVerificați statisticile domeniului și autentificarea

Modul de depanare

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

Bune practici

  1. Verificați domeniile de trimitere - Completați verificarea DNS pentru livrabilitate optimă
  2. Utilizați webhook-uri pentru evenimente - Livrare webhook în timp real față de interogarea Events API
  3. Gestionați proactiv respingerile - Suprimați imediat respingerile hard în Brevo
  4. Etichetați mesajele - Utilizați etichete pentru a categoriza și analiza performanța e-mailului
  5. Monitorizați reputația domeniului - Urmăriți metricile de livrabilitate în tabloul de bord Mailgun
  6. Utilizați validarea e-mailurilor - Validați adresele înainte de adăugarea în listele Brevo

Securitate

  • HTTP Basic Auth - Cheie API transmisă prin antetul Authorization
  • Semnături webhook - Verificare semnătură HMAC-SHA256
  • Verificare domeniu - Autentificare DNS SPF, DKIM și DMARC
  • IP whitelisting - Disponibil pentru planurile cu IP dedicat
  • Criptare TLS - Toate punctele finale API necesită HTTPS
  • Rotație chei - Rotați periodic cheile API prin tabloul de bord Mailgun

Resurse conexe

Subscribe to updates

developer-docs

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

auto-detect
Asistent AI

Bună! Întreabă-mă orice despre documentație.