Mailgun کنیکٹر

اپنے ٹرانزیکشنل اور مارکیٹنگ ای میل ڈیٹا کو متحد کرنے، ڈیلیوری ایونٹس اور engagement میٹرکس سنک کرنے، اور اپنے ای میل بنیادی ڈھانچے کو ایک واحد گاہک view میں یکجا کرنے کے لیے Tajo کے ذریعے Mailgun کو Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمMailgun (by Sinch)
زمرہای میل مارکیٹنگ
سیٹ اپ کی پیچیدگیآسان
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاایونٹس، رابطے، Deliverability، مہمات
تصدیق کا طریقہAPI Key (HTTP Basic Auth)

خصوصیات

  • ڈیلیوری ایونٹ سنک - delivered، bounced، opened، اور clicked ایونٹس ٹریک کریں
  • Engagement میٹرکس - open اور click ریٹس کو Brevo رابطہ خصوصیات پر سنک کریں
  • Bounce انتظام - Brevo میں bounce شدہ پتوں کو خودکار طور پر suppress کریں
  • Complaint ہینڈلنگ - فہرست hygiene کے لیے spam complaints سنک کریں
  • Domain reputation - بھیجنے والے domain کی صحت اور deliverability کی نگرانی کریں
  • ٹرانزیکشنل ای میل ٹریکنگ - مارکیٹنگ ڈیٹا کے ساتھ ٹرانزیکشنل sends کا تعلق قائم کریں

شرائط

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. تصدیق شدہ بھیجنے والے domain کے ساتھ Mailgun اکاؤنٹ
  2. Mailgun Dashboard سے Mailgun API key
  3. API رسائی کے ساتھ Brevo اکاؤنٹ
  4. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ

تصدیق

API Key تصدیق

Mailgun HTTP Basic Authentication کا استعمال کرتا ہے جس میں api کو username اور آپ کی API key کو password کے طور پر استعمال کیا جاتا ہے:

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 Key اقسام

Mailgun domain مخصوص بھیجنے والی keys اور اکاؤنٹ سطح کی API keys فراہم کرتا ہے۔ پیغام آپریشنز کے لیے domain sending keys اور انتظامی آپریشنز کے لیے اکاؤنٹ API key استعمال کریں۔

تشکیل

بنیادی سیٹ اپ

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

API اینڈ پوائنٹس

اینڈ پوائنٹطریقہتفصیل
https://api.mailgun.net/v3/{domain}/messagesPOSTای میل پیغامات بھیجیں
https://api.mailgun.net/v3/{domain}/eventsGETایونٹ لاگز کی کوئری
https://api.mailgun.net/v3/{domain}/bouncesGETbounces کی فہرست
https://api.mailgun.net/v3/{domain}/complaintsGETcomplaints کی فہرست
https://api.mailgun.net/v3/{domain}/unsubscribesGETunsubscribes کی فہرست
https://api.mailgun.net/v3/{domain}/tagsGETٹیگز کی فہرست
https://api.mailgun.net/v3/{domain}/tags/{tag}/statsGETٹیگ کے اعدادوشمار حاصل کریں
https://api.mailgun.net/v3/listsGETmailing lists کی فہرست
https://api.mailgun.net/v3/domainsGETdomains کی فہرست
https://api.mailgun.net/v4/address/validatePOSTای میل پتہ کی توثیق

EU Region

EU پر مبنی Mailgun اکاؤنٹس کے لیے، تمام API اینڈ پوائنٹس کے لیے https://api.mailgun.net کے بجائے https://api.eu.mailgun.net استعمال کریں۔

کوڈ کی مثالیں

کنیکٹر کو انیشیلائز کریں

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

ای میل ایونٹس کو 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
}

Mailgun Webhooks کو سنبھالیں

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

Bounces اور Complaints سنک کریں

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

شرح کی حدود

اینڈ پوائنٹحدنوٹس
Messages APIپلان کے مطابق مختلف100/گھنٹہ (free), لامحدود (paid)
Events APIکوئی واضح حد نہیں300 آئٹمز زیادہ سے زیادہ کے ساتھ pagination استعمال کریں
Validation APIپلان پر مبنیPay-per-validation
Webhooksریئل ٹائمڈیلیوری پر کوئی شرح کی حد نہیں
Suppressions APIکوئی واضح حد نہیںمعیاری شرح کی حد لاگو ہوتی ہے

بھیجنے کی حدود

Mailgun آپ کے پلان اور domain reputation کی بنیاد پر بھیجنے کی حدود نافذ کرتا ہے۔ نئے domains کم حدود کے ساتھ شروع ہوتے ہیں جو آپ کے sender reputation میں بہتری کے ساتھ بڑھتی ہیں۔ Mailgun dashboard میں اپنے domain کے اعدادوشمار کی نگرانی کریں۔

ٹربل شوٹنگ

مسئلہوجہحل
401 Unauthorizedغلط API keyMailgun dashboard میں API key کی تصدیق کریں
Domain تصدیق شدہ نہیںDNS records غائبمطلوبہ TXT, CNAME, MX records شامل کریں
Webhook موصول نہیں ہواURL قابل رسائی نہیںیقینی بنائیں کہ webhook URL عوامی طور پر قابل رسائی ہے
ایونٹس غائبوقت کی حد بہت تنگbegin/end پیرامیٹرز کو پھیلائیں
کم deliverabilityDomain reputationdomain stats اور تصدیق چیک کریں

ڈیبگ موڈ

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

بہترین طرز عمل

  1. بھیجنے والے domains کی تصدیق کریں - بہترین deliverability کے لیے DNS verification مکمل کریں
  2. ایونٹس کے لیے webhooks استعمال کریں - Events API کو polling کرنے کے بجائے ریئل ٹائم webhook ڈیلیوری
  3. Bounces کو فعال طور پر سنبھالیں - hard bounces کو فوراً Brevo میں suppress کریں
  4. اپنے پیغامات کو ٹیگ کریں - ای میل کارکردگی کو زمرہ بندی اور تجزیہ کرنے کے لیے ٹیگز استعمال کریں
  5. Domain reputation کی نگرانی کریں - Mailgun dashboard میں deliverability میٹرکس ٹریک کریں
  6. ای میل توثیق استعمال کریں - Brevo فہرستوں میں شامل کرنے سے پہلے پتوں کی توثیق کریں

سیکیورٹی

  • HTTP Basic Auth - API key Authorization ہیڈر کے ذریعے منتقل
  • Webhook دستخط - HMAC-SHA256 دستخط کی توثیق
  • Domain تصدیق - SPF, DKIM, اور DMARC DNS تصدیق
  • IP وائٹ لسٹنگ - dedicated IP plans کے لیے دستیاب
  • TLS انکرپشن - تمام API اینڈ پوائنٹس کو HTTPS درکار ہے
  • Key روٹیشن - Mailgun dashboard کے ذریعے API keys کو وقتاً فوقتاً گردش دیں

متعلقہ وسائل

Subscribe to updates

developer-docs

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

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔