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
Verifica la tua email per creare chiavi API revocabili e con permessi limitati.
- Crea casella
- Attendi email
- 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.
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 /Creare una casella e ottenerne indirizzo e scadenzainboxes -
GET /Attendere fino a 20 secondi il prossimo messaggio dopo un cursoreinboxes/ {id}/ wait ?after=0&timeout=20 -
GET /Elencare fino a 50 messaggi dopo un cursore, dal più vecchio al più recenteinboxes/ {id}/ messages ?after=0 -
GET /Leggere un messaggio: testo, codici, link ed elenco degli allegatiinboxes/ {id}/ messages/ {message_id} -
GET /Scaricare un allegato tramite il suo indiceinboxes/ {id}/ messages/ {message_id}/ attachments/ {index} -
DELETE /Eliminare subito la casella e i suoi messaggiinboxes/ {id}
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
{
"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 APIAttendere 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)
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
- 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.
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
claude mcp add --transport http tempgenerator-mail https://www.tempgenerator.com/mcp \
--header "Authorization: Bearer $TEMPGENERATOR_TOKEN"
Cursor: .cursor/mcp.json
{
"mcpServers": {
"tempgenerator-mail": {
"url": "https://www.tempgenerator.com/mcp",
"headers": { "Authorization": "Bearer ${env:TEMPGENERATOR_TOKEN}" }
}
}
}
VS Code: .vscode/mcp.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.
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
| Limite | Prova | Token sviluppatore |
|---|---|---|
| Durata della casella | 10 minuti | Fino a 60 minuti |
| Caselle attive | 1 | 5 per account |
| Nuove caselle | Una ogni 10 minuti per rete | 20 all’ora |
| Richieste API | 120 al minuto | 120 al minuto |
| Attesa in long polling | Fino a 20 secondi, una per casella | Fino a 20 secondi, una per casella, 2 alla volta |
| Messaggi per casella | Fino a 10 | Fino a 10 |
| Testo del messaggio nella risposta | Primi 128 KB | Primi 128 KB |
| Download degli allegati | Fino a 10 MB ciascuno | Fino a 10 MB ciascuno |
| Accesso | Solo questa scheda del browser | API 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.