Σύνδεσμος Mailgun

Συνδέστε το Mailgun με το Brevo μέσω Tajo για ενοποίηση δεδομένων συναλλακτικού και marketing email, συγχρονισμό εκδηλώσεων παράδοσης και μετρικών αφοσίωσης, και ενοποίηση της υποδομής email σε μία ενιαία εικόνα πελάτη.

Επισκόπηση

ΙδιότηταΤιμή
ΠλατφόρμαMailgun (by Sinch)
ΚατηγορίαEmail Marketing
Πολυπλοκότητα ΡύθμισηςΕύκολη
Επίσημη ΕνσωμάτωσηΌχι
Δεδομένα που ΣυγχρονίζονταιΕκδηλώσεις, Επαφές, Δυνατότητα Παράδοσης, Καμπάνιες
Μέθοδος ΠιστοποίησηςAPI Key (HTTP Basic Auth)

Χαρακτηριστικά

  • Συγχρονισμός εκδηλώσεων παράδοσης - Παρακολούθηση εκδηλώσεων παράδοσης, αναπήδησης, ανοίγματος και κλικ
  • Μετρικά αφοσίωσης - Συγχρονισμός ποσοστών ανοίγματος και κλικ σε χαρακτηριστικά επαφών Brevo
  • Διαχείριση αναπηδήσεων - Αυτόματη καταστολή διευθύνσεων αναπήδησης στο Brevo
  • Χειρισμός παραπόνων - Συγχρονισμός παραπόνων spam για υγιεινή λίστας
  • Φήμη τομέα - Παρακολούθηση υγείας τομέα αποστολής και δυνατότητας παράδοσης
  • Παρακολούθηση συναλλακτικού email - Συσχέτιση συναλλακτικών αποστολών με δεδομένα marketing

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

  1. Λογαριασμό Mailgun με επαληθευμένο τομέα αποστολής
  2. Κλειδί API Mailgun από το Mailgun Dashboard
  3. Λογαριασμό Brevo με πρόσβαση API
  4. Λογαριασμό Tajo με δικαιώματα συνδέσμου

Πιστοποίηση

Πιστοποίηση με Κλειδί API

Το Mailgun χρησιμοποιεί HTTP Basic Authentication με api ως username και το κλειδί API σας ως κωδικό:

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

Το Mailgun παρέχει κλειδιά αποστολής ανά τομέα και κλειδιά API επιπέδου λογαριασμού. Χρησιμοποιήστε κλειδιά αποστολής τομέα για λειτουργίες μηνυμάτων και το κλειδί API λογαριασμού για λειτουργίες διαχείρισης.

Διαμόρφωση

Βασική Ρύθμιση

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

Αντιστοίχιση Πεδίων

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

Endpoints API

EndpointΜέθοδοςΠεριγραφή
https://api.mailgun.net/v3/{domain}/messagesPOSTΑποστολή email μηνυμάτων
https://api.mailgun.net/v3/{domain}/eventsGETΕρώτημα αρχείων καταγραφής εκδηλώσεων
https://api.mailgun.net/v3/{domain}/bouncesGETΛίστα αναπηδήσεων
https://api.mailgun.net/v3/{domain}/complaintsGETΛίστα παραπόνων
https://api.mailgun.net/v3/{domain}/unsubscribesGETΛίστα διαγραφών
https://api.mailgun.net/v3/{domain}/tagsGETΛίστα ετικετών
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETΛήψη στατιστικών ετικέτας
https://api.mailgun.net/v3/listsGETΛίστα mailing lists
https://api.mailgun.net/v3/domainsGETΛίστα τομέων
https://api.mailgun.net/v4/address/validatePOSTΕπικύρωση διεύθυνσης email

Περιοχή EU

Για λογαριασμούς Mailgun με έδρα την EU, χρησιμοποιήστε https://api.eu.mailgun.net αντί για https://api.mailgun.net για όλα τα endpoints API.

Παραδείγματα Κώδικα

Αρχικοποίηση Συνδέσμου

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

Αποστολή Μηνύματος μέσω 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.' }

Συγχρονισμός Εκδηλώσεων Email στο 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
}

Χειρισμός 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');
});

Συγχρονισμός Αναπηδήσεων και Παραπόνων

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

Όρια Ρυθμού

EndpointΌριοΣημειώσεις
Messages APIΔιαφέρει ανά πλάνο100/ώρα (δωρεάν), απεριόριστο (επί πληρωμή)
Events APIΧωρίς ρητό όριοΧρησιμοποιήστε σελιδοποίηση με μέγιστο 300 στοιχεία
Validation APIΒάσει πλάνουΧρέωση ανά επικύρωση
WebhooksΣε πραγματικό χρόνοΧωρίς όριο ρυθμού παράδοσης
Suppressions APIΧωρίς ρητό όριοΙσχύει τυπικός περιορισμός ρυθμού

Όρια Αποστολής

Το Mailgun επιβάλλει όρια αποστολής βάσει του πλάνου και της φήμης τομέα σας. Νέοι τομείς ξεκινούν με χαμηλότερα όρια που αυξάνονται καθώς βελτιώνεται η φήμη αποστολής. Παρακολουθήστε τα στατιστικά τομέα σας στο dashboard Mailgun.

Αντιμετώπιση Προβλημάτων

ΠρόβλημαΑιτίαΛύση
401 UnauthorizedΜη έγκυρο κλειδί APIΕπαληθεύστε κλειδί API στο dashboard Mailgun
Μη επαληθευμένος τομέαςΛείπουν εγγραφές DNSΠροσθέστε τις απαιτούμενες εγγραφές TXT, CNAME, MX
Δεν λαμβάνεται webhookΜη προσβάσιμο URLΒεβαιωθείτε ότι το URL webhook είναι δημόσια προσβάσιμο
Λείπουν εκδηλώσειςΥπερβολικά στενό χρονικό εύροςΔιευρύνετε παραμέτρους begin/end
Χαμηλή δυνατότητα παράδοσηςΦήμη τομέαΕλέγξτε στατιστικά τομέα και πιστοποίηση

Λειτουργία Εντοπισμού Σφαλμάτων

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

Βέλτιστες Πρακτικές

  1. Επαληθεύστε τομείς αποστολής - Ολοκληρώστε επαλήθευση DNS για βέλτιστη δυνατότητα παράδοσης
  2. Χρησιμοποιήστε webhooks για εκδηλώσεις - Παράδοση webhook σε πραγματικό χρόνο έναντι polling του Events API
  3. Χειριστείτε αναπηδήσεις προληπτικά - Καταστείλετε αμέσως σκληρές αναπηδήσεις στο Brevo
  4. Επισημάνετε τα μηνύματά σας - Χρησιμοποιήστε ετικέτες για κατηγοριοποίηση και ανάλυση απόδοσης email
  5. Παρακολουθήστε φήμη τομέα - Παρακολουθήστε μετρικά δυνατότητας παράδοσης στο dashboard Mailgun
  6. Χρησιμοποιήστε επικύρωση email - Επικυρώστε διευθύνσεις πριν τη προσθήκη σε λίστες Brevo

Ασφάλεια

  • HTTP Basic Auth - Κλειδί API μεταδίδεται μέσω κεφαλίδας Authorization
  • Υπογραφές webhook - Επαλήθευση υπογραφής HMAC-SHA256
  • Επαλήθευση τομέα - Πιστοποίηση DNS με SPF, DKIM και DMARC
  • Λίστα επιτρεπόμενων IP - Διαθέσιμο για πλάνα αφιερωμένης IP
  • Κρυπτογράφηση TLS - Όλα τα endpoints API απαιτούν HTTPS
  • Εναλλαγή κλειδιών - Εναλλαγή κλειδιών API περιοδικά μέσω dashboard Mailgun

Σχετικοί Πόροι

Subscribe to updates

developer-docs

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

auto-detect
AI Βοηθός

Γεια! Ρωτήστε με οτιδήποτε για την τεκμηρίωση.