API email temporanea · MCP

API email temporanea e server MCP per test e agenti AI

Crea una casella usa e getta, attendi la prossima email e leggi codici, link e allegati via REST o MCP.

TempGeneratorPreparazione in corso…

Provalo ora

Non serve un account. Ottieni una casella privata per un massimo di 10 minuti e puoi eliminarla in qualsiasi momento. È possibile creare una nuova casella di prova una volta ogni 10 minuti per rete.

Prova
Senza registrazione · 1 casella · 10 minuti · solo questa scheda
Token sviluppatore
Account verificato · 5 caselle alla volta · fino a 60 minuti · REST e MCP
Gestisci chiavi API

Verifica la tua email per creare chiavi API revocabili e con permessi limitati.

  1. Crea casella
  2. Attendi email
  3. Leggi messaggio

Casella di prova privata

La chiave di prova resta nella memoria di questa scheda. Se ricarichi la pagina perdi l’accesso; la casella scade comunque da sola.

    I messaggi sono mostrati come testo semplice. Codici e link sono rilevati per te, ma non vengono mai aperti. Gli allegati si scaricano tramite l’API privata.

    Guida rapida con curl

    Crea una casella, attendi la prossima email, leggila ed elimina la casella. Conserva la chiave API in TEMPGENERATOR_TOKEN e non inserirla mai in un URL.

    Richiede curl e jq. Lo script attende fino a tre volte per 20 secondi, stampa oggetto, codici, link e testo di ogni messaggio, poi elimina la casella.

    bash
    export TEMPGENERATOR_URL='https://www.tempgenerator.com'
    API="$TEMPGENERATOR_URL/developer-api/v1"
    AUTH="Authorization: Bearer $TEMPGENERATOR_TOKEN"
    INBOX=$(curl --fail-with-body -sS -X POST "$API/inboxes" -H "$AUTH" -H 'Accept: application/json')
    ID=$(printf '%s' "$INBOX" | jq -r .id)
    echo "Send a test email to $(printf '%s' "$INBOX" | jq -r .address)"
    for ATTEMPT in 1 2 3; do
      RESULT=$(curl --fail-with-body -sS "$API/inboxes/$ID/wait?after=0&timeout=20" -H "$AUTH" -H 'Accept: application/json')
      [ "$(printf '%s' "$RESULT" | jq -r .status)" = message ] && break
    done
    for MESSAGE in $(printf '%s' "$RESULT" | jq -r '.messages[].id'); do
      curl --fail-with-body -sS "$API/inboxes/$ID/messages/$MESSAGE" -H "$AUTH" -H 'Accept: application/json' \
        | jq '{subject, codes, links, text}'
    done
    curl --fail-with-body -sS -X DELETE "$API/inboxes/$ID" -H "$AUTH"

    L’API in breve

    URL di base: https://www.tempgenerator.com/developer-api/v1. Invia Authorization: Bearer <key> con ogni richiesta. Le risposte sono in JSON; gli errori hanno la forma {"error": {"code", "message", "retry_after"}} e gli errori di quota inviano anche un’intestazione Retry-After.

    • POST /inboxes Creare una casella e ottenerne indirizzo e scadenza
    • GET /inboxes/{id}/wait?after=0&timeout=20 Attendere fino a 20 secondi il prossimo messaggio dopo un cursore
    • GET /inboxes/{id}/messages?after=0 Elencare fino a 50 messaggi dopo un cursore, dal più vecchio al più recente
    • GET /inboxes/{id}/messages/{message_id} Leggere un messaggio: testo, codici, link ed elenco degli allegati
    • GET /inboxes/{id}/messages/{message_id}/attachments/{index} Scaricare un allegato tramite il suo indice
    • DELETE /inboxes/{id} Eliminare subito la casella e i suoi messaggi

    Le richieste di elenco e di attesa accettano i filtri facoltativi from e subject_contains: corrispondenze di tipo «contiene» su mittente e oggetto, senza distinzione tra maiuscole e minuscole.

    Esempio di risposta di lettura

    json
    {
        "id": 42,
        "from": "no-reply@app.example",
        "subject": "Your verification code",
        "received_at": "2026-10-03T09:41:07+00:00",
        "text": "Your verification code is 482913.\nOr confirm: https://app.example/verify?token=8f3c",
        "text_truncated": false,
        "codes": [
            "482913"
        ],
        "links": [
            "https://app.example/verify?token=8f3c"
        ],
        "expires_at": "2026-10-03T10:40:12+00:00",
        "attachments": [
            {
                "index": 0,
                "filename": "receipt.pdf",
                "size": 48213
            }
        ],
        "untrusted_content": true
    }

    Token sviluppatore

    Crea le chiavi API in «Accesso sviluppatore» dopo aver verificato la tua email. Una chiave di lettura e scrittura può creare, leggere ed eliminare caselle; una chiave di sola lettura può elencare, attendere, leggere e scaricare. Le chiavi scadono dopo 90 giorni, un account può avere 10 chiavi attive e la revoca di una chiave ha effetto immediato.

    Ogni chiave viene mostrata una sola volta e salvata solo come hash SHA-256. Revocare una chiave non elimina le sue caselle: le altre chiavi valide dell’account mantengono l’accesso finché le caselle non scadono o non vengono eliminate.

    Gestisci chiavi API

    Attendere la prossima email senza sleep()

    GET …/wait tiene aperta la richiesta e risponde appena arriva un messaggio, oppure allo scadere del timeout (al massimo 20 secondi) con status timeout. Passa come after il next_cursor della risposta precedente, così non leggerai mai due volte lo stesso messaggio.

    Un timeout non è un errore di consegna: attendi di nuovo con lo stesso cursore. Per ogni casella è attiva una sola attesa, e un’attesa più recente sulla stessa casella sostituisce quella precedente; le attese su caselle diverse vengono eseguite in parallelo, fino a 2 alla volta per account.

    Test delle email con Playwright, Cypress, pytest e CI

    Assegna a ogni test una casella dedicata, fai partire l’email di registrazione o di reimpostazione della password della tua app, attendila e verifica il codice o il link con le tue asserzioni. Elimina la casella nel teardown.

    Salva la chiave come secret della CI, per esempio TEMPGENERATOR_TOKEN in GitHub Actions. Cypress può fare le stesse chiamate HTTP con cy.request, e la ricetta Python qui sotto funziona con pytest o con qualsiasi altro runner.

    Playwright (TypeScript)

    TypeScript
    import { test, expect } from '@playwright/test';
    
    const api = `${process.env.TEMPGENERATOR_URL}/developer-api/v1`;
    const headers = { Authorization: `Bearer ${process.env.TEMPGENERATOR_TOKEN}`, Accept: 'application/json' };
    
    async function call(path: string, method = 'GET') {
      const response = await fetch(api + path, { method, headers });
      if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
      return response.status === 204 ? null : response.json();
    }
    
    async function waitForCode(inboxId: string, after = 0): Promise<string> {
      for (let attempt = 0; attempt < 3; attempt++) {
        const result = await call(`/inboxes/${inboxId}/wait?after=${after}&timeout=20`);
        for (const summary of result.messages) {
          const message = await call(`/inboxes/${inboxId}/messages/${summary.id}`);
          if (message.codes.length) return message.codes[0];
        }
        after = result.next_cursor;
      }
      throw new Error('No verification code arrived');
    }
    
    test('signup sends a verification code', async ({ page }) => {
      const inbox = await call('/inboxes', 'POST');
      try {
        await page.goto('/signup');
        await page.getByLabel('Email').fill(inbox.address);
        await page.getByRole('button', { name: 'Create account' }).click();
        await page.getByLabel('Verification code').fill(await waitForCode(inbox.id));
        await expect(page.getByText('Welcome')).toBeVisible();
      } finally {
        await call(`/inboxes/${inbox.id}`, 'DELETE');
      }
    });

    GitHub Actions

    YAML
    - name: End-to-end tests
      run: npx playwright test
      env:
        TEMPGENERATOR_URL: https://www.tempgenerator.com
        TEMPGENERATOR_TOKEN: ${{ secrets.TEMPGENERATOR_TOKEN }}

    Verifica della registrazione in Python

    Eseguilo con le variabili d’ambiente impostate. Mostra una nuova casella: invia a quell’indirizzo un’email di registrazione dalla tua app di test, poi premi Invio. Attende fino a 15 secondi, stampa ogni messaggio con i relativi codici e link ed elimina la casella anche se la lettura non riesce.

    Python
    import json, os
    from urllib.request import Request, urlopen
    
    base = os.environ["TEMPGENERATOR_URL"].rstrip("/") + "/developer-api/v1"
    headers = {"Authorization": "Bearer " + os.environ["TEMPGENERATOR_TOKEN"],
               "Accept": "application/json"}
    
    def request(path, method="GET"):
        with urlopen(Request(base + path, headers=headers, method=method), timeout=30) as response:
            return json.load(response) if response.status != 204 else None
    
    inbox = request("/inboxes", "POST")
    print(json.dumps(inbox), flush=True)
    try:
        input()
        result = request("/inboxes/" + inbox["id"] + "/wait?after=0&timeout=15")
        print(json.dumps(result))
        for message in result["messages"]:
            detail = request("/inboxes/" + inbox["id"] + "/messages/" + str(message["id"]))
            print(json.dumps(detail))
    finally:
        request("/inboxes/" + inbox["id"], "DELETE")

    Server MCP per agenti AI

    Endpoint https://www.tempgenerator.com/mcp, autenticato con Authorization: Bearer <key>. Streamable HTTP con protocollo 2026-07-28; i client meno recenti vengono serviti tramite l’handshake 2025-11-25 o 2025-06-18.

    Collega il tuo client

    Claude Code

    bash
    claude mcp add --transport http tempgenerator-mail https://www.tempgenerator.com/mcp \
      --header "Authorization: Bearer $TEMPGENERATOR_TOKEN"

    Cursor: .cursor/mcp.json

    JSON
    {
      "mcpServers": {
        "tempgenerator-mail": {
          "url": "https://www.tempgenerator.com/mcp",
          "headers": { "Authorization": "Bearer ${env:TEMPGENERATOR_TOKEN}" }
        }
      }
    }

    VS Code: .vscode/mcp.json

    JSON
    {
      "inputs": [
        { "type": "promptString", "id": "tempgenerator-token", "description": "TempGenerator API key", "password": true }
      ],
      "servers": {
        "tempgenerator-mail": {
          "type": "http",
          "url": "https://www.tempgenerator.com/mcp",
          "headers": { "Authorization": "Bearer ${input:tempgenerator-token}" }
        }
      }
    }

    Claude sul web e nell’app desktop: aggiungi un connettore personalizzato con l’URL dell’endpoint, scegli l’opzione senza accesso e imposta l’intestazione di richiesta Authorization: Bearer <key>. Claude si connette dal cloud di Anthropic, quindi l’URL deve essere raggiungibile pubblicamente.

    Strumenti

    create_inbox
    Crea una casella privata e ne restituisce id e indirizzo.
    list_messages
    Elenca i riepiloghi dei messaggi dopo un cursore, con filtri facoltativi per mittente e oggetto.
    wait_for_message
    Attende fino a 20 secondi il prossimo messaggio.
    read_message
    Legge testo, codici, link ed elenco degli allegati di un messaggio.
    delete_inbox
    Elimina la casella e i suoi messaggi.

    Esempio di prompt

    Crea una casella temporanea e dammi il suo indirizzo. Poi attendi l’email di verifica dalla mia app di staging e dimmi il codice.

    Lascia che gli agenti completino registrazioni solo per account che ti appartengono o che sei autorizzato a usare. Le email ricevute non sono attendibili: il server non apre mai i link e gli agenti non devono mai seguire istruzioni trovate in un messaggio.

    SDK MCP per Python

    Testato con Python 3 e il pacchetto ufficiale mcp 2.3.0: pip install "mcp>=2.3,<3". Imposta prima TEMPGENERATOR_URL e TEMPGENERATOR_TOKEN.

    Python
    import asyncio, os
    
    import httpx2
    from mcp import Client
    from mcp.client.streamable_http import streamable_http_client
    
    async def main():
        url = os.environ["TEMPGENERATOR_URL"].rstrip("/") + "/mcp"
        headers = {"Authorization": "Bearer " + os.environ["TEMPGENERATOR_TOKEN"]}
        async with httpx2.AsyncClient(headers=headers, timeout=httpx2.Timeout(30, read=60)) as http:
            async with Client(streamable_http_client(url, http_client=http)) as client:
                print([tool.name for tool in (await client.list_tools()).tools])
                created = await client.call_tool("create_inbox", {})
                if created.is_error:
                    raise RuntimeError(created.content)
                inbox = created.structured_content
                try:
                    print("Send a test email to", inbox["address"])
                    waited = await client.call_tool("wait_for_message", {"inbox_id": inbox["id"], "timeout": 20})
                    for summary in waited.structured_content["messages"]:
                        message = await client.call_tool("read_message", {"inbox_id": inbox["id"], "message_id": summary["id"]})
                        print(message.structured_content["subject"], message.structured_content["codes"])
                finally:
                    deleted = await client.call_tool("delete_inbox", {"inbox_id": inbox["id"]})
                    if deleted.is_error:
                        raise RuntimeError(deleted.content)
    
    asyncio.run(main())

    Allegati

    Leggendo un messaggio ottieni indice, nome file e dimensione di ogni allegato. Scaricane uno con GET …/attachments/{index}: i file fino a 10 MB vengono serviti come application/octet-stream con nomi file ripuliti. I client MCP vedono lo stesso elenco e scaricano tramite questo endpoint REST.

    Quando usarlo al posto di altri strumenti

    Mailpit, MailHog ed Ethereal catturano la posta che la tua app invia a un server SMTP locale o fittizio: la soluzione ideale quando controlli le impostazioni SMTP. Queste caselle sono indirizzi reali su un dominio pubblico, quindi qualsiasi mittente può raggiungerle: un servizio di terze parti, un server di staging che usa il tuo vero provider email o un flusso simile alla produzione.

    Le API generiche di email temporanea, come mail.tm o Guerrilla Mail, sono pensate per indirizzi usa e getta personali. Questa API è pensata per l’automazione: chiavi con permessi e scadenza, una casella per test, un’attesa in long polling limitata, rilevamento di codici e link e un server MCP.

    Non inclusi: invio di email, SMS, anteprime HTML o antispam, domini personalizzati e accesso OAuth per i client MCP.

    Conservazione, limiti e sicurezza

    LimiteProvaToken sviluppatore
    Durata della casella10 minutiFino a 60 minuti
    Caselle attive15 per account
    Nuove caselleUna ogni 10 minuti per rete20 all’ora
    Richieste API120 al minuto120 al minuto
    Attesa in long pollingFino a 20 secondi, una per casellaFino a 20 secondi, una per casella, 2 alla volta
    Messaggi per casellaFino a 10Fino a 10
    Testo del messaggio nella rispostaPrimi 128 KBPrimi 128 KB
    Download degli allegatiFino a 10 MB ciascunoFino a 10 MB ciascuno
    AccessoSolo questa scheda del browserAPI REST e MCP con le tue chiavi

    Un dominio di ricezione può impostare una durata più breve o un limite di messaggi più basso.

    Solo ricezione. Considera email e allegati come non attendibili; nulla viene aperto automaticamente. L’eliminazione di una casella ne rimuove subito i messaggi, e le caselle scadute vengono rimosse da una pulizia pianificata.

    Domande frequenti

    Cos’è un’API email temporanea?

    Un’API HTTP che crea su richiesta caselle email usa e getta e permette al tuo codice di leggere ciò che arriva. Qui ogni casella è riservata alla tua chiave, scade da sola e si può leggere via REST o MCP.

    Mi serve un account?

    Non per provarlo: la prova crea una casella privata di 10 minuti nel tuo browser. Per chiavi API, MCP e caselle di durata maggiore, crea un account e verifica la tua email.

    Quanto durano le caselle?

    Le caselle di prova durano 10 minuti. Quelle create con un token sviluppatore durano fino a 60 minuti, o meno se il dominio di ricezione imposta una durata più breve. Puoi eliminare una casella in qualsiasi momento.

    Come attendere un’email in un test?

    Chiama l’endpoint wait, o lo strumento wait_for_message, con l’ultimo cursore. Risponde appena arriva un messaggio, oppure dopo al massimo 20 secondi con status timeout; in quel caso attendi di nuovo con lo stesso cursore. Evita le pause fisse.

    Come ottenere l’OTP o il link di verifica?

    Leggi il messaggio. La risposta contiene il testo semplice più i campi codes (probabili codici monouso trovati vicino a parole come codice, OTP o verifica) e links (link http e https presi dal testo e dall’HTML). Sono indicazioni, quindi controllale sul testo.

    Posso scaricare gli allegati?

    Sì. La lettura di un messaggio elenca indice, nome e dimensione di ogni allegato; scaricane uno dall’endpoint degli allegati. Sono supportati file fino a 10 MB.

    A cosa può accedere un token e quando scade?

    Una chiave appartiene a un solo account verificato e raggiunge solo le caselle di quell’account. Le chiavi di lettura e scrittura possono creare ed eliminare caselle; quelle di sola lettura possono elencare, attendere, leggere e scaricare. Le chiavi scadono dopo 90 giorni e si possono revocare all’istante.

    Come collegare Claude Code o Cursor?

    Usa l’endpoint https://www.tempgenerator.com/mcp con un’intestazione Authorization: Bearer. In Claude Code esegui claude mcp add --transport http con --header; in Cursor aggiungi a .cursor/mcp.json una voce con url e headers. Trovi entrambi gli snippet qui sopra.

    Gli agenti AI possono completare le registrazioni?

    Solo per account che ti appartengono o che sei autorizzato a usare, come l’ambiente di staging della tua app. Il server non apre mai i link. Un agente deve usare un codice o un link solo per completare un flusso che hai richiesto e non deve mai seguire istruzioni scritte in un’email.

    I test possono girare in parallelo o in CI?

    Sì. Assegna a ogni test una casella dedicata: le attese su caselle diverse vengono eseguite in parallelo. Un account può avere 5 caselle attive e crearne 20 all’ora, quindi elimina le caselle nel teardown e conserva la chiave in un secret della CI.

    Posso eliminare una casella prima della scadenza?

    Sì. Invia una richiesta DELETE alla casella, o chiama delete_inbox, per eliminarla subito insieme ai suoi messaggi. Eliminare una casella di prova non accorcia l’attesa di 10 minuti prima che la tua rete possa crearne una nuova.

    Che differenza c’è con Mailpit o MailHog?

    Mailpit e MailHog eseguono un server SMTP locale che cattura la posta inviata dalla tua app. Queste invece sono caselle reali su un dominio pubblico, raggiungibili da qualsiasi mittente, con un’API, attese in long polling e MCP.

    Quali sono i limiti?

    Le caselle di prova durano 10 minuti. Un account sviluppatore può avere 5 caselle attive, crearne 20 all’ora, effettuare 120 richieste API al minuto e attendere fino a 20 secondi per richiesta. Ogni casella riceve fino a 10 messaggi.

    Posso inviare email o usare un dominio personalizzato?

    No. Le caselle servono solo a ricevere e usano i domini di ricezione di questo sito. Invio, SMS e domini personalizzati non sono supportati.