---
title: "Conector Mailgun"
description: "Ghid complet de integrare Mailgun pentru sincronizarea datelor de livrare e-mail, metricilor de implicare și evenimentelor de e-mail tranzacțional cu Brevo prin Tajo."
url: https://tajo.io/ro/docs/connectors/marketing/mailgun/
markdown: https://tajo.io/ro/docs/connectors/marketing/mailgun.md
lang: ro-RO
robots: noindex
---

Solicită acces anticipat

Introduceți prenumele și adresa de e-mail profesională. Vă vom trimite un link pentru a confirma cererea de acces la Tajo.

# Conector Mailgun

Starea conectorului: Planificat Încă neconstruit. Tajo nu rulează astăzi acest conector.

| Câmp sursă | Câmp destinație | Valoare exemplu |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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ă

| Proprietate | Valoare |
| --- | --- |
| **Platformă** | Mailgun (by Sinch) |
| **Categorie** | Marketing prin e-mail |
| **Complexitate configurare** | Ușoară |
| **Integrare oficială** | Nu |
| **Date sincronizate** | Evenimente, Contacte, Livrabilitate, Campanii |
| **Metodă autentificare** | Cheie 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](https://app.mailgun.com/settings/api_security)
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ă:

```bash
# 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
```

```javascript
// 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ă

```yaml
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

```yaml
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 final | Metodă | Descriere |
| --- | --- | --- |
| `https://api.mailgun.net/v3/{domain}/messages` | POST | Trimite mesaje e-mail |
| `https://api.mailgun.net/v3/{domain}/events` | GET | Interogă jurnalele de evenimente |
| `https://api.mailgun.net/v3/{domain}/bounces` | GET | Listează respingerile |
| `https://api.mailgun.net/v3/{domain}/complaints` | GET | Listează reclamațiile |
| `https://api.mailgun.net/v3/{domain}/unsubscribes` | GET | Listează dezabonările |
| `https://api.mailgun.net/v3/{domain}/tags` | GET | Listează etichetele |
| `https://api.mailgun.net/v3/{domain}/tags/{tag}/stats` | GET | Obține statisticile etichetei |
| `https://api.mailgun.net/v3/lists` | GET | Listează listele de corespondență |
| `https://api.mailgun.net/v3/domains` | GET | Listează domeniile |
| `https://api.mailgun.net/v4/address/validate` | POST | Validează 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

```javascript
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

```javascript
// Send an email using Mailgun's Messages API
const formData = new URLSearchParams();
formData.append('from', `Your App <noreply@${domain}>`);
formData.append('to', 'recipient@example.com');
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: '<message-id@domain.com>', message: 'Queued. Thank you.' }
```

### Sincronizare evenimente e-mail la Brevo

```javascript
// 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

```javascript
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

```javascript
// 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 final | Limită | Note |
| --- | --- | --- |
| Messages API | Variază în funcție de plan | 100/oră (gratuit), nelimitat (plătit) |
| Events API | Fără limită explicită | Utilizați paginarea cu max 300 articole |
| Validation API | Bazat pe plan | Plată per validare |
| Webhook-uri | Timp real | Fără limită de rată la livrare |
| Suppressions API | Fă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 Neautorizat | Cheie 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 neprimit | URL inaccesibil | Asigurați că URL-ul webhook este accesibil public |
| Evenimente lipsă | Interval de timp prea restrâns | Extindeți parametrii `begin`/`end` |
| Livrabilitate scăzută | Reputație domeniu | Verificați statisticile domeniului și autentificarea |

### Modul de depanare

```yaml
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

- [Conector Brevo](https://tajo.io/ro/docs/connectors/marketing/brevo)
- [Conector Segment](https://tajo.io/ro/docs/connectors/custom/segment)
- [Skill Sincronizare clienți](https://tajo.io/ro/docs/skills/data-sync/customer-sync)
- [Documentație API Mailgun](https://documentation.mailgun.com/)
