MailLandDocs
E-Mail-Versand

Massenversand

E-Mails an mehrere Empfänger in einem einzigen API-Aufruf senden

Der Massenversand ist nur mit Marketing-Stream-Zugangsdaten verfügbar. Transaktionale Zugangsdaten geben 400 BATCH_NOT_ALLOWED_FOR_TRANSACTIONAL zurück. Dies verhindert den Missbrauch transaktionaler Streams für Massen-E-Mails.

Einen Massenversand durchführen

POST https://api.mail.land/v1/transactional/send-batch
Massen-E-Mail senden
curl -X POST https://api.mail.land/v1/transactional/send-batch \
  -H "X-API-Key: ml_pem_Ab3Kx9mN2pQ7rT4wL8yD..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": {
      "email": "[email protected]",
      "name": "Your Company"
    },
    "recipients": [
      {
        "email": "[email protected]",
        "name": "Alice",
        "variables": { "firstName": "Alice", "plan": "Pro" }
      },
      {
        "email": "[email protected]",
        "name": "Bob",
        "variables": { "firstName": "Bob", "plan": "Starter" }
      }
    ],
    "subject": "Hi {{firstName}}, check out what'\''s new",
    "htmlContent": "<h1>Hey {{firstName}}!</h1><p>Your {{plan}} plan just got an upgrade.</p>",
    "variables": {
      "companyName": "Acme Inc",
      "year": "2026"
    },
    "tags": ["product-update", "february-2026"],
    "batchName": "February Product Update"
  }'

Anfragefelder

FeldTypErforderlichBeschreibung
fromobjectJaAbsenderadresse (email und optionaler name)
recipientsarrayJaListe der Empfänger (Hinweis: recipients, nicht to)
recipients[].emailstringJaEmpfänger-E-Mail
recipients[].namestringNeinAnzeigename des Empfängers
recipients[].variablesobjectNeinEmpfängerspezifische Template-Variablen
subjectstringBedingtErforderlich, sofern keine templateId verwendet wird
templateIdstringNeinEin gespeichertes Template verwenden
htmlContentstringBedingtHTML-Inhalt (erforderlich, wenn keine templateId angegeben)
textContentstringNeinNur-Text-Fallback
variablesobjectNeinGlobale Variablen. Werden unabhängig davon angewendet, ob templateId gesetzt ist; bei überschneidenden Schlüsseln gewinnt der empfängereigene Wert aus recipients[].variables
replyTostringNeinAntwortadresse
batchNamestringNeinMenschenlesbarer Name für diesen Massenversand
tagsarrayNeinTags für Analysen und Webhook-Filterung
customHeadersobjectNeinBenutzerdefinierte E-Mail-Header
trackingobjectNeinÜberschreibungen für Öffnungs-/Klick-Tracking
ipPoolIdstringNeinReserviert für dedizierte IP-Pools. Noch nicht verfügbar – wird es gesendet, kommt 400 IP_POOL_NOT_FOUND zurück. Weglassen.
scheduledAtdatetimeNeinFür zukünftige Zustellung planen, bis zu 7 Tage im Voraus
externalBatchIdstringNeinMassenversand-Kennung Ihres Systems – wird sie angegeben, wird sie unverändert als batchId in der Antwort zurückgegeben
priorityenumNeinLow, Normal (Standard), High, Critical
idempotencyKeystringNeinVerhindert doppelte Sendungen für denselben Schlüssel. Der X-Idempotency-Key-Header wird bevorzugt

Beachten Sie den Feldnamenunterschied: Der Massenversand verwendet recipients, während der Einzelversand to verwendet.

Antwort

Status: 202 Accepted

Massenversand-Antwort
{
  "success": true,
  "batchId": "batch_f47ac10b58cc43729876fedcba098765",
  "messageIds": ["m_a1b2c3...", "m_d4e5f6..."],
  "totalRecipients": 2,
  "acceptedCount": 2,
  "rejectedCount": 0,
  "rejectedRecipients": [],
  "queuedAt": "2026-02-17T10:30:00Z",
  "estimatedCompletion": "2026-02-17T10:35:00Z",
  "isSandboxed": false
}
FeldTypBeschreibung
batchIdstringEindeutige Massenversand-Kennung
messageIdsarrayNachrichten-IDs pro Empfänger (mit m_-Präfix für Marketing)
totalRecipientsintGesamtzahl der Empfänger in der Anfrage
acceptedCountintFür die Zustellung akzeptierte Empfänger
rejectedCountintAbgelehnte Empfänger
rejectedRecipientsarrayDetails zu abgelehnten Empfängern mit Gründen
estimatedCompletiondatetimeGeschätzte Zeit bis zum Abschluss der Massenverarbeitung

Variablenzusammenführung

Empfängerspezifische Variablen überschreiben globale Variablen bei Schlüsselüberschneidungen:

Variablenpriorität
{
  "variables": {
    "companyName": "Acme Inc",
    "greeting": "Hello"
  },
  "recipients": [
    {
      "email": "[email protected]",
      "variables": { "greeting": "Dear valued customer" }
    },
    {
      "email": "[email protected]"
    }
  ]
}

Fehlerbehandlung

Massenversand-spezifische Fehler:

StatusCodeBeschreibung
400BATCH_NOT_ALLOWED_FOR_TRANSACTIONALTransaktionale Zugangsdaten können keinen Massenversand durchführen
400VALIDATION_FAILEDMaximale Empfängeranzahl pro Massenversand überschritten (10.000)
400INVALID_REQUESTscheduledAt mehr als 7 Tage im Voraus ("Cannot schedule email more than 7 days in advance")
400TEMPLATE_NOT_FOUNDtemplateId benennt kein aktives Template dieses Kontos (wird auch für ein gelöschtes Template zurückgegeben)
400IP_POOL_NOT_FOUNDipPoolId benennt keinen diesem Konto zugewiesenen Pool
422TEMPLATE_VARIABLE_MISSINGFür jeden Empfänger fehlt der Wert eines {{placeholder}} (fehlt er nur bei einigen, werden diese übersprungen und mit dem Grund template_variable_missing: name in rejectedRecipients aufgeführt). Nichts wird eingereiht
400BATCH_SEND_FAILEDAlle Empfänger sind unterdrückt
429RATE_LIMIT_EXCEEDEDRatenlimit überschritten (Workspace/Plan – nicht pro Zugangsdaten)
429QUOTA_EXCEEDEDMonatliches Kontingent erschöpft

Die für POST /v1/transactional/send dokumentierten Konto-Verifizierungs- und Policy-Codes (SENDING_BLOCKED, ACTION_REQUIRED, DAILY_LIMIT_EXCEEDED, MARKETING_PAUSED und die übrigen) gelten auch hier.

Teilerfolg ist möglich: einige Empfänger können akzeptiert werden, während andere abgelehnt werden (z. B. gesperrte Adressen). Prüfen Sie rejectedRecipients in der Antwort.

Nächste Schritte

Auf dieser Seite