Schnellstart

Von null zu einer über HTTP zurückgelesenen Nachricht, in vier Befehlen. Kein Konto, kein Schlüssel, kein SDK.

1. Adresse wählen

Ein beliebiger Name auf einer unserer öffentlichen Domains. Es gibt nichts aufzurufen und nichts zu registrieren — die Adresse wird real, sobald etwas an sie zugestellt wird.

Halten Sie sie unerratbar, falls niemand zufällig vorbeischauen soll: Bei einer öffentlichen Domain ist die Adresse das Einzige, was zwischen dem Postfach und der Welt steht.

Shell
$ ADDR="ci-$(openssl rand -hex 4)@grabmail.io"; echo "$ADDR"

2. Etwas hinschicken

Verwenden Sie sie im Anmeldeformular, im Passwort-Reset-Ablauf oder wobei auch immer Sie gerade testen. Die Zustellung dauert normalerweise ein paar Sekunden.

Unsere Mailserver akzeptieren Nachrichten bis 5 MB. Alles Größere wird bereits bei SMTP abgelehnt, sodass der Absender sofort Bescheid weiß, statt im Ungewissen zu bleiben.

Shell
$ curl -sX POST https://your-app.example/signup --data-urlencode "email=$ADDR"

3. Postfach abfragen

Eine Anfrage pro Sekunde ist der vorgesehene Rhythmus und wird nie gedrosselt. Ein leeres Postfach antwortet mit 200 und count: 0 — nie mit 404, Ihre Schleife muss diesen Fall also nicht gesondert behandeln.

Dieses Snippet gibt nach einer Minute auf, statt endlos weiterzulaufen — genau das wollen Sie in CI.

abfragen, bis sie eintrifft
$ for i in $(seq 60); do
  ID=$(curl -sG https://grabmail.io/api/v1/mailbox --data-urlencode "address=$ADDR" | jq -r '.messages[0].id // empty')
  [ -n "$ID" ] && break
  sleep 1
done; echo "$ID"

4. Lesen, dann wegwerfen

Holen Sie die Nachricht ab und entnehmen Sie ihr, wonach Sie suchen — hier ein sechsstelliger Code aus dem Klartextteil.

Das Löschen ist optional: Alles verschwindet nach 5 Tagen von selbst. Tun Sie es in CI trotzdem, dann startet der nächste Lauf mit einem sauberen Postfach.

lesen und löschen
$ curl -sG https://grabmail.io/api/v1/message/$ID --data-urlencode "mailbox=$ADDR" \
  | jq -r .text | grep -oE '[0-9]{6}'

curl -sX DELETE -G https://grabmail.io/api/v1/message/$ID --data-urlencode "mailbox=$ADDR"

Einbindung in CI

Zwei Gewohnheiten verhindern, dass eine Testsuite, die echte Mail liest, instabil wird:

Eine frische Adresse pro Durchlauf
Leiten Sie sie von der Build-ID oder einem zufälligen Suffix ab. Wird eine Adresse über mehrere Läufe hinweg wiederverwendet, kann die Nachricht von gestern die Prüfung von heute bestehen.
Eine Frist, kein Wiederholungszähler
Fragen Sie wie oben gegen ein Zeitlimit nach der Echtzeituhr ab. Die Anzahl der Versuche wird stillschweigend größer, wenn Ihr Absender langsamer wird.
Nie von der Zustellzeit ausgehen
Mail ist nicht synchron. Prüfen Sie, dass die Nachricht ankommt, nicht dass sie innerhalb einer bestimmten Sekunde ankommt.
Nutzen Sie Ihre eigene Domain für etwas Echtes
Ein öffentliches Postfach kann von jedem gelesen werden, der die Adresse errät. Für eine Wegwerf-Anmeldung ist das in Ordnung, für eine Staging-Umgebung mit Kundendaten nicht. Ein einziger MX-Eintrag behebt das.

Für KI-Agenten: MCP

Ein Agent kann diese Seite nicht lesen, sich für einen Endpunkt entscheiden und eine Anfrage schreiben. Er fragt einen Server, welche Tools existieren, und ruft sie auf. grabmail betreibt genau dafür einen Model Context Protocol-Server, unter https://grabmail.io/mcp — ohne Schlüssel, ohne Konto.

Richten Sie einen beliebigen MCP-Client auf den Endpunkt. Claude Desktop, Cursor, Continue und das OpenAI Agents SDK verstehen alle dieses Format.

Sechs Tools: create_inbox, list_domains, list_messages, read_message, delete_message und wait_for_message.

mcp.json
$ {"mcpServers":{"grabmail":{"url":"https://grabmail.io/mcp"}}}

wait_for_message ist die entscheidende Funktion. Der Grund, warum ein Agent ein Wegwerf-Postfach möchte, ist fast immer ein Bestätigungscode, der zwischen ihm und dem nächsten Schritt steht. Statt in einer Schleife zu pollen, die Tokens verbraucht, fragt er nach einer Adresse, sendet das Formular ab und wartet, bis die Mail eintrifft:

Wartet bis zu 25 Sekunden und liefert die vollständige Nachricht — Absender, Betreff, Inhalt — oder meldet einen Timeout, damit der Agent einfach erneut aufrufen kann.

Sie kann auch auf eine bestimmte Nachricht warten: Übergeben Sie subject_contains oder from_contains, dann wird alles andere, was eintrifft, ignoriert.

MCP · wait_for_message
$ curl -sX POST https://grabmail.io/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"wait_for_message","arguments":{"address":"you@grabmail.io","subject_contains":"code"}}}'

Es gibt außerdem eine OpenAPI 3.1 Spezifikation (YAML) für Codegeneratoren sowie llms.txt für alles, was lieber Klartext liest.

Weiter

API-Referenz

Jeder Parameter, jeder Statuscode, die Fehlerstruktur.

Referenz öffnen →

Limits

Was begrenzt ist, was nicht, und was an der Obergrenze passiert.

Limits öffnen →

Ihre eigene Domain

Machen Sie jedes Postfach Ihrer Domain nur für Sie privat.

Einrichtung ansehen →