Mailgun Bağlayıcısı

İşlemsel ve pazarlama e-posta verilerinizi birleştirmek, teslimat olaylarını ve etkileşim metriklerini senkronize etmek ve e-posta altyapınızı tek bir müşteri görünümüne konsolide etmek için Mailgun’u Tajo aracılığıyla Brevo’ya bağlayın.

Genel Bakış

ÖzellikDeğer
PlatformMailgun (Sinch tarafından)
KategoriE-posta Pazarlaması
Kurulum KarmaşıklığıKolay
Resmi EntegrasyonHayır
Senkronize Edilen VeriOlaylar, Kişiler, Teslim Edilebilirlik, Kampanyalar
Kimlik Doğrulama YöntemiAPI Anahtarı (HTTP Basic Auth)

Özellikler

  • Teslimat olay senkronizasyonu - Teslim edildi, geri döndü, açıldı ve tıklandı olaylarını takip edin
  • Etkileşim metrikleri - Açılma ve tıklama oranlarını Brevo kişi özniteliklerine senkronize edin
  • Geri dönme yönetimi - Geri dönen adresleri Brevo’da otomatik olarak bastırın
  • Şikayet yönetimi - Liste hijyeni için spam şikayetlerini senkronize edin
  • Alan adı itibarı - Gönderici alan adı sağlığını ve teslim edilebilirliği izleyin
  • İşlemsel e-posta takibi - İşlemsel gönderimleri pazarlama verileriyle ilişkilendirin

Ön Koşullar

Başlamadan önce sahip olmanız gerekenler:

  1. Doğrulanmış gönderici alan adı olan bir Mailgun hesabı
  2. Mailgun Dashboard’dan bir Mailgun API anahtarı
  3. API erişimi olan bir Brevo hesabı
  4. Bağlayıcı izinlerine sahip bir Tajo hesabı

Kimlik Doğrulama

API Anahtar Kimlik Doğrulaması

Mailgun, kullanıcı adı olarak api ve şifre olarak API anahtarınızla HTTP Basic Authentication kullanır:

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 Anahtar Türleri

Mailgun, alan adına özel gönderim anahtarları ve hesap seviyesi API anahtarları sağlar. Mesaj işlemleri için alan adı gönderim anahtarlarını, yönetim işlemleri için hesap API anahtarını kullanın.

Yapılandırma

Temel Kurulum

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

Alan Eşleme

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 Uç Noktaları

Uç NoktaYöntemAçıklama
https://api.mailgun.net/v3/{domain}/messagesPOSTE-posta mesajları gönder
https://api.mailgun.net/v3/{domain}/eventsGETOlay günlüklerini sorgula
https://api.mailgun.net/v3/{domain}/bouncesGETGeri dönenleri listele
https://api.mailgun.net/v3/{domain}/complaintsGETŞikayetleri listele
https://api.mailgun.net/v3/{domain}/unsubscribesGETAbonelikten çıkanları listele
https://api.mailgun.net/v3/{domain}/tagsGETEtiketleri listele
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETEtiket istatistiklerini al
https://api.mailgun.net/v3/listsGETPosta listelerini listele
https://api.mailgun.net/v3/domainsGETAlan adlarını listele
https://api.mailgun.net/v4/address/validatePOSTE-posta adresini doğrula

AB Bölgesi

AB merkezli Mailgun hesapları için tüm API uç noktalarında https://api.mailgun.net yerine https://api.eu.mailgun.net kullanın.

Kod Örnekleri

Bağlayıcıyı Başlat

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 Üzerinden Bir Mesaj Gönder

// 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-posta Olaylarını Brevo’ya Senkronize Et

// 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 Webhook’larını İşle

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

Geri Dönmeleri ve Şikayetleri Senkronize Et

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

Hız Limitleri

Uç NoktaLimitNotlar
Messages APIPlana göre değişir100/saat (ücretsiz), sınırsız (ücretli)
Events APIAçık limit yok300 öğe maksimum ile sayfalama kullanın
Validation APIPlana göreDoğrulama başına ödeme
Webhook’larGerçek zamanlıTeslimatta hız limiti yok
Suppressions APIAçık limit yokStandart hız sınırlaması uygulanır

Gönderim Limitleri

Mailgun, planınıza ve alan adı itibarınıza göre gönderim limitleri uygular. Yeni alan adları, gönderici itibarınız geliştikçe artan düşük limitlerle başlar. Alan adı istatistiklerinizi Mailgun panosunda izleyin.

Sorun Giderme

SorunNedenÇözüm
401 UnauthorizedGeçersiz API anahtarıMailgun panosunda API anahtarını doğrulayın
Alan adı doğrulanmadıDNS kayıtları eksikGerekli TXT, CNAME, MX kayıtlarını ekleyin
Webhook alınmıyorURL erişilemezWebhook URL’nin herkese açık erişilebilir olduğundan emin olun
Olaylar eksikZaman aralığı çok darbegin/end parametrelerini genişletin
Düşük teslim edilebilirlikAlan adı itibarıAlan adı istatistiklerini ve kimlik doğrulamasını kontrol edin

Hata Ayıklama Modu

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

En İyi Uygulamalar

  1. Gönderim alan adlarını doğrulayın - Optimal teslim edilebilirlik için DNS doğrulamasını tamamlayın
  2. Olaylar için webhook kullanın - Events API’yi sorgulamak yerine gerçek zamanlı webhook teslimatı
  3. Geri dönmeleri proaktif yönetin - Brevo’da sert geri dönmeleri hemen bastırın
  4. Mesajlarınızı etiketleyin - E-posta performansını kategorize etmek ve analiz etmek için etiketler kullanın
  5. Alan adı itibarını izleyin - Mailgun panosunda teslim edilebilirlik metriklerini takip edin
  6. E-posta doğrulaması kullanın - Brevo listelerine eklemeden önce adresleri doğrulayın

Güvenlik

  • HTTP Basic Auth - API anahtarı Authorization başlığı üzerinden iletilir
  • Webhook imzaları - HMAC-SHA256 imza doğrulaması
  • Alan adı doğrulama - SPF, DKIM ve DMARC DNS kimlik doğrulaması
  • IP beyaz listesi - Özel IP planları için mevcuttur
  • TLS şifrelemesi - Tüm API uç noktaları HTTPS gerektirir
  • Anahtar rotasyonu - Mailgun panosu üzerinden API anahtarlarını periyodik olarak rotasyona alın

İlgili Kaynaklar

Subscribe to updates

developer-docs

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

auto-detect
AI Asistan

Merhaba! Belgeler hakkında her şeyi sorabilirsiniz.