Come leggere le email tramite API: una guida per sviluppatori all'accesso alla posta in arrivo (2026)

.
Guida per sviluppatori 2026

Come leggere le email tramite API: una guida per sviluppatori su Accesso alla posta in arrivo

Ambito: Questa guida copre API di sincronizzazione per la lettura delle caselle di posta esistenti degli utenti - Gmail API, Microsoft Graph, IMAP e livelli unificati come Unipile. Questo è distinto dai servizi transazionali (SendGrid, Mailgun) che inviano email in uscita dal tuo dominio.

Costruisci prodotti che leggono le e-mail degli utenti programmaticamente. Da un singolo GET /api/v1/email chiamate ai webhook in tempo reale, questa guida copre ogni approccio con codice funzionante in Node.js, Python e cURL.

leggi_inbox.js
// Leggi email con un'unica chiamata API unificata const response = await fetch( 'https://api3.unipile.com:PORT/api/v1/emails', { intestazioni: { 'X-API-KEY': process.env.UNIPILE_API_KEY, 'ID account': accountId } } ); const { email } = await risposta.json(); // Stessa forma JSON per Gmail, Outlook e IMAP email.per ciascunoemail => { console.log(email.oggetto, email.da_partecipante); });
200 OK - 47 email restituiti (Gmail + Outlook + IMAP)
Funziona con: Gmail Prospettiva IMAP Gmail, Outlook e IMAP
Definizione

Che cos'è un'API di lettura e-mail?

Un'API di lettura email è un'interfaccia HTTP che consente alla tua applicazione di accedere, recuperare ed elaborare le email dalla casella di posta esistente di un utente, senza memorizzare password o creare integrazioni specifiche per il provider. È la base di qualsiasi prodotto che necessiti di visibilità sulla casella di posta: sincronizzazione CRM, assistenti AI per le email, automazione del supporto o archiviazione per la conformità.

Definizione rapida

A leggi email API espone endpoint per l'autenticazione contro la casella di posta di un utente (tramite credenziali OAuth 2.0 o IMAP), elenca i messaggi in arrivo, recupera i corpi completi delle email con allegati e sottoscrive eventi di consegna in tempo reale. Funziona sull'account Gmail, Outlook o IMAP esistente dell'utente - non un dominio che controlli. Questo lo distingue dalle API di email transazionali (SendGrid, Mailgun, Resend), che inviano email in uscita per conto della tua applicazione.

Questa guida copre
API per sincronizzare / leggere le email

Connettiti alle caselle di posta esistenti degli utenti. Leggi, sincronizza e reagisci alle email in tempo reale. Autenticazione tramite OAuth 2.0 o IMAP. L'utente concede l'accesso alla propria casella di posta.

Esempi: Gmail API, Microsoft Graph, IMAP, Unipile
Non questa guida
API per email transazionali

Invia email in uscita da un dominio che controlli. Usato per ricevute, notifiche, reset password. Nessun accesso alla casella di posta.

Esempi: SendGrid, Mailgun, Resend, Postmark
Casi d'uso

Perché la lettura programmatica delle email è importante

La capacità di leggere le email degli utenti tramite API sblocca una categoria di prodotti che erano semplicemente impossibili con solo SMTP. Ecco i quattro casi d'uso principali che guidano l'adozione nel 2026.

Sincronizzazione CRM e Vendite di Coinvolgimento

Gli strumenti di vendita devono vedere ogni thread di e-mail tra un rappresentante e un potenziale cliente, automaticamente, senza registrazione manuale. Un'API di lettura delle e-mail estrae le conversazioni direttamente dalla casella di posta del rappresentante e le sincronizza con il tuo CRM in tempo reale.

Registra automaticamente gli scambi di email sui record di contatto
Estrai segnali pertinenti agli accordi dalla posta in arrivo
Rileva intenzione di risposta e aggiorna fase della pipeline

Agenti AI e Copilot per le Email

I modelli linguistici di grandi dimensioni necessitano di contesto. Fornendo al tuo agente AI un flusso in tempo reale di email in arrivo, puoi creare copiloti che abbozzano risposte, riassumono thread, estraggono elementi d'azione e danno priorità alle conversazioni automaticamente.

Flusso di nuove e-mail verso una pipeline di elaborazione LLM
Genera bozze di risposte sensibili al contesto
Estrai attività, date e impegni dai thread

Automazione del supporto clienti

I team di supporto ricevono migliaia di email al giorno. Un'API di lettura delle email consente alla tua piattaforma di classificare le richieste in arrivo, instradarle alla coda corretta e attivare risposte automatiche, il tutto prima che un essere umano apra un ticket.

Classifica le email di supporto per argomento e urgenza
Inoltro a code di agenti in base al contenuto dell'email
Attiva le risposte automatiche per i modelli di richieste comuni

Conformità, Archiviazione e eDiscovery

I settori regolamentati devono conservare e indicizzare ogni email. Un'API per la lettura delle email fornisce l'accesso programmatico necessario per archiviare continuamente le caselle di posta, segnalare violazioni delle norme e produrre registrazioni di email su richiesta per revisioni legali.

Archiviazione continua della casella di posta per la conformità GDPR / FINRA
Rilevamento di violazioni delle policy nelle caselle di posta dei dipendenti
esportazione eDiscovery su richiesta per blocco legale
Analisi approfondita del provider

API native per la lettura delle email: Gmail, Outlook e IMAP

Ogni provider di posta elettronica principale espone la propria API di lettura con endpoint, modelli di autenticazione e funzionalità diversi. Ecco come appare nella pratica ciascuno.

API Gmail

OAuth 2.0

L'API Gmail è un'API REST basata sull'infrastruttura di Google. Utilizza utenti.messaggi.elenca per sfogliare una casella di posta e utenti.messaggi.get per recuperare un messaggio completo. Supporta notifiche push tramite Google Pub/Sub, rendendo il monitoraggio della casella di posta in tempo reale fattibile senza polling. Limite di frequenza: 250 unità di quota per utente al secondo.

gmail_lettura.sh
# Elenco dei messaggi nella posta in arrivo (API di Gmail) ricciolo -X OTTIENI \ "https://gmail.googleapis.com/gmail/v1/users/me/messages?labelIds=INBOX&maxResults=20" \ -H "Autorizzazione: Bearer ACCESS_TOKEN" # Recupera una singola e-mail con il testo completo ricciolo -X OTTIENI \ "https://gmail.googleapis.com/gmail/v1/users/me/messages/ID_MESSAGGIO?format=full" \ -H "Autorizzazione: Bearer ACCESS_TOKEN"
Nota: Gmail restituisce i messaggi come parti MIME codificate in base64. Devi decodificare ogni parte e analizzare i delimitatori multipart da solo per estrarre il corpo in testo normale, il corpo HTML e gli allegati.

Microsoft Graph (Outlook e Microsoft 365)

OAuth 2.0

Microsoft Graph è l'API unificata per tutti i servizi Microsoft 365, inclusi i singoli account Outlook, Exchange Online e le caselle di posta aziendali di Microsoft 365. Il /me/messaggi endpoint restituisce messaggi con il corpo completo in un'unica richiesta. La paginazione utilizza $salta e $sopra Parametri OData. Vedi il completo Guida all'integrazione delle e-mail con Microsoft Graph per i dettagli.

graph_read.sh
# Elenco dei messaggi nella posta in arrivo (Microsoft Graph) ricciolo -X OTTIENI \ ""https://graph.microsoft.com/v1.0/me/messages?\$top=20&\$filter=parentFolderId eq 'inbox'"' \ -H "Autorizzazione: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" # Recupera un singolo messaggio con corpo ricciolo -X OTTIENI \ ""https://graph.microsoft.com/v1.0/me/messages/MESSAGE_ID?\$select=subject,body,from,receivedDateTime"" \ -H "Autorizzazione: Bearer ACCESS_TOKEN"
Nota: Microsoft Graph limita a 10.000 richieste ogni 10 minuti per applicazione per tenant. Il contenuto del corpo viene restituito come HTML o testo a seconda del $seleziona e Accettare intestazioni.

IMAP

Protocollo Universale

IMAP (Internet Message Access Protocol) è il protocollo email universale supportato praticamente da ogni server di posta. Non è un'API REST ma una connessione TCP stateful tramite la porta 993 (TLS). Emetti comandi come RECUPERA, RICERCA, e INATTIVO sulla connessione. Per un approfondimento, vedi il nostro Guida all'integrazione dell'API IMAP.

imap_read.py
import imaplib, e-mail #: Connessione e autenticazione posta elettronica = imaplib.IMAP4_SSL('imap.example.com') posta.Accedi('user@example.com', 'password_app') posta.seleziona('POSTA IN ARRIVO') # Alla ricerca di messaggi nascosti stato, message_ids = posta.ricerca(Nessuno, 'INVISIBILE') per msg_id in message_ids[0].spaccare(): _, data = posta.fetch(id_messaggio, '(RFC822)') messaggio = email.messaggio_da_byte(dati[0][1]) print(messaggio'soggetto'], msg['da'])
Nota: IMAP richiede il mantenimento di connessioni TCP di lunga durata e la gestione autonoma dei pool di connessioni. La consegna in tempo reale utilizza INATTIVO comando, che mantiene una connessione aperta e attende le notifiche del server. Ciò non scala facilmente oltre qualche centinaio di account concorrenti.
E per quanto riguarda Yahoo e altri provider?

Yahoo Mail, ProtonMail, Zoho e altri provider supportano tutti IMAP come soluzione universale di riserva, quindi sono coperti dall'approccio IMAP sopra descritto. Alcuni (come Yahoo) espongono anche API proprietarie limitate, ma nessuna eguaglia le capacità dell'API di Gmail o di Microsoft Graph. Per la maggior parte dei prodotti multi-provider, IMAP è la soluzione universale di riserva per qualsiasi casella di posta non coperta da Gmail o Outlook OAuth. API email unificata gestisce questa negoziazione automaticamente.

Ingegneria della Realtà

La complessa complessità della lettura delle email su larga scala

Costruire un'integrazione API per la lettura delle e-mail contro un singolo provider per una demo richiede un pomeriggio. Costruirne una che funzioni in modo affidabile su tutti i provider su scala di produzione è una sfida completamente diversa. Ecco cosa comporta effettivamente l'ingegneria.

01

Flusso OAuth per provider

Ogni provider ha la propria implementazione OAuth 2.0, requisiti per la schermata di consenso, ambiti e ciclo di vita dei token. Il supporto di Gmail e Outlook significa mantenere due app OAuth separate, due console per sviluppatori, due strategie di rinnovo dei token e due set di requisiti di conformità (Google CASA Tier 2, Microsoft Publisher Verification).

Gmail:App Google Cloud Console, Livello CASA 2 per ambiti sensibili, token di accesso di 1 ora
Outlook:Registrazione di un'app in Azure AD, verifica dell'editore, TTL del token configurabile
IMAP:Password per app o OAuth (IMAP di Gmail utilizza lo stesso flusso OAuth di Google)
02

Differenze di paginazione

Ogni provider gestisce la paginazione in modo diverso. Gmail utilizza token di pagina opachi. Microsoft Graph utilizza OData. $salta e nextLink cursor. IMAP utilizza intervalli di UID numerici. L'implementazione di un'astrazione di paginazione coerente tra tutti e tre richiede un codice adattatore non banale.

Gmail:cursor delle pagine, max 500 risultati per pagina
Grafico:URL @odata.nextLink, parametri $top/$skip
IMAP:UID FETCH intervalli, CONDSTORE per sincronizzazione incrementale
03

Analisi MIME

Le email arrivano come documenti MIME grezzi con limiti multipart annidati, codifica base64 o quoted-printable, set di caratteri multipli e allegati inline. Gmail restituisce parti codificate in base64url. IMAP restituisce RFC 822 grezzo. Nessuno dei due ti fornisce un corpo di testo normale pulito senza analizzare l'intero albero MIME.

RischioCaratteri internazionali, emoji e testo da destra a sinistra introducono casi limite di codifica che corrompono il contenuto del corpo
Allegati:Deve attraversare l'albero MIME per trovare le parti Content-Disposition: attachment
04

Limiti di frequenza e backoff

Gmail applica 250 unità di quota per utente al secondo (un elenco costa 5 unità, recuperare costa 5 unità). Microsoft Graph applica una limitazione di 10.000 richieste ogni 10 minuti per app per tenant. Entrambi restituiscono errori 429 che richiedono un backoff esponenziale con jitter. Con 1.000 account collegati, la gestione dei limiti di frequenza diventa un problema ingegneristico a tutti gli effetti.

Gmail:250 unità di quota/sec/utente. Limite giornaliero: 1 miliardo di unità
Grafico:10.000 req / 10 min / app / tenant. Header Retry-After
IMAP:Specifico del provider, tipicamente 10-20 connessioni simultanee per account
05

In Tempo Reale: Webhook, Polling e IDLE a confronto

Ricevere notifiche all'arrivo di nuove email richiede meccanismi completamente diversi per ciascun provider. Gmail utilizza le sottoscrizioni push di Google Pub/Sub che devono essere rinnovate ogni 7 giorni. Microsoft Graph utilizza le sottoscrizioni di notifica delle modifiche con una durata massima di 4.230 minuti. IMAP utilizza il comando IDLE, che mantiene aperta una connessione TCP persistente per account.

Gmail:Pub/Sub push, scadenza a 7 giorni, richiede ciclo di rinnovo
Grafico:sottoscrizione changeNotifications, scadenza massima di circa 3 giorni
IMAP:Comando IDLE, 1 connessione TCP persistente per account
06

Incoerenze di filato tra provider

Gmail raggruppa nativamente i messaggi in thread. Microsoft Graph ha un campo conversationId ma i thread si comportano in modo diverso da Gmail. IMAP non ha threading nativo: ricostruisci i thread abbinando manualmente gli header References e In-Reply-To. La creazione di una vista di thread unificata cross-provider richiede una logica di normalizzazione significativa.

Gmail:threadId nativo, messages.list?labelIds=INBOX restituisce gruppi di thread
Grafico:conversationId, ma non equivalente ai thread di Gmail
IMAP:Devi analizzare manualmente gli header Message-ID / References
Architettura

Architettura API di lettura email: 3 approcci a confronto

Non esiste un'unica architettura "corretta" per la lettura delle e-mail. L'approccio giusto dipende da quanti provider è necessario supportare, dalle risorse di ingegneria disponibili e dai requisiti di scalabilità. Ecco un confronto onesto.

Approccio Pro Conservare Quando usare
API del provider diretto
Gmail API, Microsoft Graph
Livello gratuito, accesso completo alle funzionalità, nessuna latenza intermedia Configurazione OAuth per provider, analisi MIME, gestione separata dei limiti di frequenza, nessuna normalizzazione tra provider Solo fornitore unico
IMAP self-ospitato
imaplib, node-imap
Protocollo universale, funziona con qualsiasi casella di posta, nessuna app OAuth richiesta Connessioni TCP stateful, nessuna notifica push (polling o IDLE), gestione del connection pool, lento su larga scala Legacy / solo on-premise
API unificata per la lettura delle email
Unipile
Un endpoint per tutti i provider, risposta JSON normalizzata, OAuth gestito, webhook unificati, logica di ripetizione integrata Costo aggiuntivo per chiamata API per account collegato, dipendenza esterna Prodotti multi-provider
API del provider diretto
Gmail API, Microsoft Graph
Pro Livello gratuito, accesso completo alle funzionalità, nessuna latenza intermedia
Conservare Configurazione OAuth per provider, analisi MIME, gestione separata dei limiti di frequenza, nessuna normalizzazione tra provider
Quando usare Solo fornitore unico
IMAP self-ospitato
imaplib, node-imap
Pro Protocollo universale, funziona con qualsiasi casella di posta, nessuna app OAuth richiesta
Conservare Connessioni TCP stateful, nessuna notifica push (polling o IDLE), gestione del connection pool, lento su larga scala
Quando usare Legacy / solo on-premise
API unificata per la lettura delle email
Unipile
Pro Un endpoint per tutti i provider, risposta JSON normalizzata, OAuth gestito, webhook unificati, logica di ripetizione integrata
Conservare Costo aggiuntivo per chiamata API per account collegato, dipendenza esterna
Quando usare Prodotti multi-provider
Ideale per un singolo fornitore
API Diretta del Fornitore

Se tutti gli utenti del tuo prodotto utilizzano Gmail, integrati direttamente con l'API di Gmail. Otterrai la parità di funzionalità completa, nessun costo aggiuntivo e l'accesso a funzionalità specifiche di Gmail come etichette, thread e push Pub/Sub.

Il migliore per i sistemi legacy
IMAP self-ospitato

Server di posta on-premises, distribuzioni Exchange aziendali senza accesso all'API Graph o qualsiasi scenario in cui OAuth non sia disponibile. Utilizzare IMAP come soluzione di ripiego, non come strategia principale per i nuovi prodotti.

Il migliore per i prodotti SaaS
API unificata per la lettura delle email

Quando i tuoi utenti hanno caselle di posta Gmail, Outlook e IMAP e necessiti di un'unica API di lettura email coerente per tutte, uno strato unificato come Unipile elimina completamente il problema dell'integrazione N-provider.

Configurazione in 5 minuti

Leggere le e-mail con l'API Unificata di lettura e-mail di Unipile

Unipile astrae API di Gmail, Microsoft Graph e IMAP dietro un'unica API di lettura delle email. Un flusso OAuth, un endpoint, una struttura JSON normalizzata, indipendentemente dal provider su cui si trova la casella di posta del tuo utente. Ecco come leggere la tua prima casella di posta in meno di 5 minuti.

1
Autentica un utente con il link di autenticazione ospitato

Genera un URL di autenticazione ospitato dalla tua dashboard Unipile. Invia questo link al tuo utente: completa il flusso di consenso OAuth per il suo provider (credenziali Gmail, Outlook o IMAP) sulla pagina ospitata di Unipile. Nessuna configurazione dell'app OAuth, nessuna configurazione dell'URI di reindirizzamento da parte tua. Vedi la guida API unificata per email per il flusso di autenticazione completo.

auth_link.sh
# Genera un link di autenticazione ospitato per il tuo utente ricciolo -X POST \ "https://api3.unipile.com:PORT/api/v1/hosted/accounts/link" \ -H "X-API-KEY: LA_TUA_CHIAVE_API" \ -H "Content-Type: application/json" \ -d '{"type":"EMAIL","name":"user@example.com","success_redirect_url":"https://yourapp.com/connected"}' Risposta #: { "url": "https://auth.unipile.com/..." } # Invia questo URL al tuo utente: dovrà completare la procedura OAuth sul proprio provider
2
Elenca le email della casella di posta - GET /api/v1/emails

Una volta che l'utente ha collegato il proprio account, chiama l'endpoint delle e-mail con il suo account_id. La risposta è identica sia che la casella di posta sottostante sia Gmail, Outlook o IMAP.

list_emails.sh
#: Elenco delle e-mail in arrivo (funziona con Gmail, Outlook e IMAP) ricciolo -X OTTIENI \ "https://api3.unipile.com:PORT/api/v1/emails?account_id=ACCOUNT_ID&limit=50" \ -H "X-API-KEY: LA_TUA_CHIAVE_API" # Filtra per cartella ricciolo "...?account_id=ACCOUNT_ID&cartella=POSTA_IN_ENTRATA&limite=50" -H "X-API-KEY: LA_TUA_CHIAVE_API" #: solo filtra non letti ricciolo "...?account_id=ACCOUNT_ID&unread=true" -H "X-API-KEY: LA_TUA_CHIAVE_API"
200 OK - JSON normalizzato, stessa struttura per tutti i provider
3
Ottieni una singola email con corpo e allegati

Recupera un'email completa tramite ID. Unipile restituisce un oggetto decodificato e normalizzato con corpo in testo normale, corpo HTML e metadati degli allegati, senza richiedere parsing MIME da parte tua.

get_email.sh
# Recupera una singola e-mail con il testo completo e gli allegati ricciolo -X OTTIENI \ "https://api3.unipile.com:PORT/api/v1/emails/EMAIL_ID" \ -H "X-API-KEY: LA_TUA_CHIAVE_API" Campi di risposta # (sempre normalizzati): # { "id", "oggetto", "data", "mittente", "destinatari", # "corpo", "corpo_semplice", "allegati": [{ "id", "nome_file", "dimensione" }] }
4
Ricevi nuove email in tempo reale tramite webhook

Registra un endpoint webhook nella tua dashboard Unipile. Unipile astrae Pub/Sub di Gmail, le notifiche di modifica di Microsoft Graph e IMAP IDLE in un unico email.ricevuto event. Nessun rinnovo di abbonamento, nessun pool di connessioni IDLE da gestire.

webhook_handler.js
// Unipile chiama il tuo endpoint quando arriva una nuova email // Stesso evento per gli utenti Gmail, Outlook e IMAP app.posta('/webhooks/email', (req, res) => { const { evento, id_account, id_email } = req.body; se (evento === 'email.ricevuto') { // Recupera tutti i dettagli dell'email elaboraNuovaEmail(id_account, id_email); } res.statoInvio(200); });
Un evento webhook sostituisce Gmail Pub/Sub + sottoscrizioni Graph + IMAP IDLE
Vuoi il riferimento completo per l'integrazione?

La Guida completa all'API delle email copre in dettaglio autenticazione, endpoint, paginazione, download di allegati, sicurezza e conformità.

Leggi la Guida API Email
Esempi di codice

Lettura Email: Esempi di Codice per Lingua

Snippet pronti per la produzione per la lettura di email con l'API unificata di lettura email di Unipile. Tutti gli esempi leggono da account Gmail, Outlook e IMAP con lo stesso codice.

Node.js / TypeScript
Pitone
Vai
leggiEmail.ts
import fetch from 'node-fetch'; const BASE = 'https://api3.unipile.com:PORT/api/v1'; const CHIAVE_API = process.env.CHIAVE_API_UNIPILE!; interfaccia Email { identificatore stringa; oggetto: stringa; data: stringa; da_partecipante: { nome_visualizzato: stringa; identificatore: stringa }; body: stringa; Nome e cognome stringa; allegati: { id: stringa; nome del file: stringa; dimensione: numero }[]; } // Elenca le email della casella di posta in arrivo - funziona per Gmail, Outlook e IMAP async function elencaEmail(accountID: stringa, limite = 50) { const res = await fetch( `${BASE}/emails?account_id=${accountId}&limit;=${limit}&folder;=INBOX`, { intestazioni: { 'X-API-KEY': CHIAVE_API } } ); const dati = await res.json(); return data.elementi come Email[]; } // Recupera una singola email con corpo completo + allegati async function OttieniEmail(emailId: stringa) { const res = await fetch(`${BASE}/emails/${emailId}`, { intestazioni: { 'X-API-KEY': CHIAVE_API } } ); return await res.json() come Email; } // Utilizzo const e-mail = await elencaEmail('acc_01abc...'); email.per ciascuno(e => console.log(e.oggetto, e.dal_partecipante.identificatore));
leggi_email.py
import os import richieste BASE = "https://api3.unipile.com:PORT/api/v1" INTÈSTAZIONI = {"X-API-KEY": os.environ["UNIPILE_API_KEY"]} def elenco_email(id_account: str, limite: int = 50) -> elenco: """Elenca le email della posta in arrivo - funziona per Gmail, Outlook e IMAP.""" rispondi = richieste.ottenere( {BASE}/email", headers=HEADERS, parametri={ "account_id": id_account, "limite"limite, "cartella": "Posta in arrivo", }, ) resp.raise_for_status() return resp.json()["articoli"] def ottenere_email(email_id: str) -> dict: """Recupera un'email singola con corpo e allegati.""" rispondi = richieste.ottenere("{BASE}/emails/{email_id}", headers=HEADERS) resp.raise_for_status() return resp.json() # Utilizzo e-mail = elenco_email("acc_01abc...") per e-mail in email: print(email["soggetto", email["dal_partecipante"]["identificatore"]) #: recupera il testo completo del corpo del messaggio per la prima e-mail pieno = ottenere_email(email0]["id"]) print(pieno"corpo_piano"])
leggi_email.go
pacco principale import ( "codifica/json" "fmt" "net/http" "os" ) tipo Email struttura { ID stringa `json:"id"` Oggetto stringa `json:"soggetto"` CorpoPiano stringa `json:"corpo_in_chiaro"` } tipo ElencoRisposta struttura { Articoli []Email `json:"elementi"` } funzione elencaEmail(accountID string) ([]Email, errore) { url := "https://api3.unipile.com:PORT/api/v1/emails?account_id=" + ID account richiesta, _ := http.Nuova Richiesta("PRENDI", url, nullo) req.Header.Imposta("X-API-KEY", os.Getenv("UNIPILE_API_KEY")) resp, err := http.DefaultClient.Fare(richiesta) se errore != nullo { return nullo, errore } rimandare resp.Body.Chiudere() variabile risultato ElencoRisposta json.Decodificatore(resp.Body).Decodifica(&risultato) return risultato.Articoli, nullo } funzione principale() { email, _ := elencaEmail("acc_01abc...") per _, e := gamma email { formato.Stampare(e\.Oggetto) } }
In tempo reale

Lettura delle email in tempo reale: Webhook vs Polling

Sapere quando arriva una nuova email è importante quanto poterla leggere. Ci sono tre meccanismi disponibili, ognuno con caratteristiche operative molto diverse su larga scala.

Evita su larga scala

Sondaggio

La tua applicazione chiama l'endpoint di elenco e-mail con un timer (ogni 30 secondi, ogni 5 minuti). Semplice da implementare ma consuma quote, introduce latenza e non è scalabile oltre una manciata di account.

Semplice - nessuna configurazione lato server
Consuma la quota API in proporzione agli account x frequenza
Sondaggio di 5 minuti = ritardo di notifica di 5 minuti
Non scala oltre circa 100 account attivi
Specifico del provider

Webhook del provider nativo

Le notifiche push di Gmail Pub/Sub e Microsoft Graph inviano eventi al tuo server immediatamente. Veloci ed efficienti in termini di quote, ma ognuno richiede una configurazione separata, una logica di rinnovo separata e schemi di eventi diversi.

Consegna quasi istantanea (secondi)
Efficace in termini di quote - attivato solo su nuove email
Gmail: la sottoscrizione Pub/Sub scade ogni 7 giorni
Grafico: abbonamento max ~3 giorni, rinnovo obbligatorio
IMAP IDLE: 1 connessione TCP per account
Consigliato

Webhook Unificati Unipile

Unipile astrae tutti i meccanismi di push del provider dietro un unico email.ricevuto event. Un endpoint riceve notifiche per account Gmail, Outlook e IMAP indistintamente, con il rinnovo automatico degli abbonamenti gestito internamente.

Un URL webhook per tutti i provider
Rinnovamento automatico di Pub/Sub e Grafici
IMAP IDLE gestito internamente per account
Payload normalizzato - stessi campi ogni volta
Come Unipile astrae la consegna di email in tempo reale

Sotto il cofano, Unipile gestisce sottoscrizioni Gmail Pub/Sub, sottoscrizioni di notifiche di modifica Microsoft Graph e connessioni IMAP IDLE, per account collegato, rinnovate automaticamente. La tua applicazione registra un URL webhook e riceve un evento normalizzato indipendentemente dal provider sottostante.

Gmail Pub/Sub
+
Sottoscrizioni grafiche
+
IMAP IDLE
->
email.ricevuto evento
Sicurezza e conformità

Sicurezza e Conformità nella Lettura delle E-mail degli Utenti

L'accesso alle email degli utenti comporta significative responsabilità in materia di sicurezza e legali. Ecco le quattro aree che devi affrontare prima di implementare un'API di lettura email in produzione.

Minimizzazione dell'ambito OAuth

Richiedi sempre l'ambito OAuth minimo necessario. Per la lettura delle email, usa scope di sola lettura - non richiedere mai permessi di invio o composizione se la tua applicazione necessita solo dell'accesso alla posta in arrivo. L'ambito di sola lettura di Gmail è gmail.solodlettura. Microsoft Graph equivalent è Posta.Leggi. Richiedere autorizzazioni ampie innesca processi di revisione più severi da parte di Google e Microsoft e riduce la fiducia degli utenti nella schermata di consenso.

Token Storage Best Practices

I token di accesso e di refresh OAuth sono credenziali. Memorizzali crittografato a riposo Utilizzare AES-256 o equivalente, mai in chiaro nel database. Ruotare le chiavi di cifratura secondo una pianificazione. Non registrare mai i token nei log dell'applicazione. Implementare la revoca dei token quando un utente disconnette il proprio account: chiamare l'endpoint di revoca del provider, non eliminare semplicemente il record nel database.

GDPR e residenza dei dati

I corpi delle email spesso contengono dati personali coperti dal GDPR. Devi documentare nella tua privacy policy esattamente quali dati delle email raccogli, conservi, elabori e per quanto tempo. Implementa un flusso di cancellazione dei dati che rimuova il contenuto delle email quando un utente richiede la cancellazione. Se memorizzi il contenuto delle email nella tua infrastruttura, considera i requisiti di residenza dei dati per i clienti UE.

Verifica di Google CASA e Microsoft Publisher

Applicazioni che richiedono ambiti Gmail sensibili (incluso gmail.solodlettura) deve completare Google's CASA Livello 2 valutazione di sicurezza prima di essere autorizzati oltre il limite di test di 100 utenti. Microsoft richiede la verifica dell'editore per le app che richiedono determinati ambiti di Graph. Entrambi i processi richiedono settimane, pianifica di conseguenza prima della data di lancio. L'utilizzo di Unipile eredita queste certificazioni dal livello della piattaforma.

Certificazioni di conformità Unipile

Unipile gestisce la certificazione di Livello 2 CASA di Gmail, la verifica di Microsoft Publisher, l'audit SOC 2 di Tipo II e gli accordi di elaborazione dati del GDPR a livello di piattaforma. I prodotti costruiti su Unipile ereditano queste certificazioni anziché completarle in modo indipendente.

SOC 2 Tipo II
Google CASA Livello 2
Conformità al GDPR
OAuth 2.0 Ambienti di sola lettura
Prezzi

Prezzi API di lettura email: piani gratuiti e modelli di costo

I piani gratuiti per le API dei provider nativi sono generosi su piccola scala, ma i costi nascosti emergono quando è necessario supportare più provider, gestire il rinnovo dei token su larga scala o raggiungere i limiti di frequenza. Ecco un'analisi onesta.

Fornitore Piano gratuito Modello di costo Limite di frequenza Costi nascosti
API Gmail Gratis con quote Unità di quota per richiesta. Nessuna fatturazione per account 250 unità/sec/utente, 1 miliardo di unità/giorno Revisione CASA Livello 2, parsing MIME, logica di rinnovo Pub/Sub
Microsoft Graph Gratuito con limitazioni Incluso nell'abbonamento a Microsoft 365. Nessun costo per chiamata 10.000 richieste/10 minuti/app/tenant Processo di verifica dell'editore, rinnovo dell'abbonamento, app OAuth per tenant
IMAP (auto-ospitato) Protocollo gratuito Nessun costo API. Costo dell'infrastruttura per pool di connessione Specifico per il provider, ~10-20 connessioni/account Infrastruttura server, gestione connessioni IDLE, nessun supporto push
Unipile 7 giorni di prova gratuita Per account collegato al mese. Vedi API email gratuita Gestito internamente, logica di riprova integrata Costo chiamata API per account - compensato dall'ingegneria OAuth/MIME eliminata
API Gmail
Gratis con quote
Modello di costo Unità di quota per richiesta. Nessuna fatturazione per account
Limite di frequenza 250 unità/sec/utente, 1 miliardo di unità/giorno
Costi nascosti Revisione CASA Livello 2, parsing MIME, logica di rinnovo Pub/Sub
Microsoft Graph
Gratuito con limitazioni
Modello di costo Incluso nell'abbonamento a Microsoft 365. Nessun costo per chiamata
Limite di frequenza 10.000 richieste/10 minuti/app/tenant
Costi nascosti Processo di verifica dell'editore, rinnovo dell'abbonamento, app OAuth per tenant
IMAP (auto-ospitato)
Protocollo gratuito
Modello di costo Nessun costo API. Costo dell'infrastruttura per pool di connessione
Limite di frequenza Specifico per il provider, ~10-20 connessioni/account
Costi nascosti Infrastruttura server, gestione connessioni IDLE, nessun supporto push
Unipile
7 giorni di prova gratuita
Modello di costo Per account collegato al mese. Vedi API email gratuita
Limite di frequenza Gestito internamente, logica di riprova integrata
Costi nascosti Costo chiamata API per account - compensato dall'ingegneria OAuth/MIME eliminata
Errori comuni

Errori comuni nella creazione di un'integrazione per le email lette

Questi sono gli errori che causano costantemente incidenti di produzione per i team che implementano la loro prima integrazione API di lettura email. Imparali prima che ti succedano.

01
Esaurimento della quota su Gmail su larga scala

Le 250 unità di quota al secondo per utente di Gmail sembrano generose finché non si hanno 500 account e si necessita di una sincronizzazione iniziale della posta in arrivo. Elencare 500 messaggi costa 2.500 unità; recuperare ogni messaggio completo costa altre 2.500. Le sincronizzazioni iniziali per grandi caselle di posta possono esaurire le quote giornaliere in poche ore.

Correggere: Implementa il backoff esponenziale sulle risposte 429, dai priorità ai messaggi recenti per la sincronizzazione iniziale e utilizza richieste batch dove disponibili per ridurre l'overhead per chiamata.
02
Mancati refresh silenziosi del token

I token di aggiornamento OAuth scadono silenziosamente: Google li revoca dopo 6 mesi di inattività, dopo un cambio di password o quando un utente revoca l'accesso dalle impostazioni del proprio Account Google. Se la logica di aggiornamento del token non rileva un errore 401 e lo segnala all'utente, l'applicazione smetterà semplicemente di leggere le email senza alcun errore visibile.

Correggere: Tratta le risposte 401 come eventi di disconnessione dell'account. Notifica all'utente e richiedi la riautenticazione. Salva un ultima_sincronizzazione_alle timestamp e avviso quando supera l'intervallo di sincronizzazione previsto.
03
Email mancanti a causa di filtri cartella errati

Le etichette di Gmail e le cartelle IMAP non sono concetti equivalenti. Quelle di Gmail INBOX L'etichetta non include i messaggi che sono stati archiviati (rimossi dalla Posta in arrivo ma non eliminati). La cartella Posta in arrivo di Microsoft Graph esclude la Posta in arrivo in primo piano rispetto ad altre suddivisioni del riquadro, a meno che non si effettuino ricerche in entrambe. Gli utenti di Teams spesso si rendono conto che mancano 20-40% messaggi a causa di presupposti errati sulle cartelle.

Correggere: Testa le tue query di cartella con account reali, inclusi messaggi archiviati, filtrati e categorizzati. Per una sincronizzazione completa, considera di interrogare TUTTO messaggi (non solo POSTA IN ARRIVO) e filtraggio per data da parte tua.
04
Bug di codifica nelle e-mail internazionali

I corpi delle email arrivano in una vasta gamma di codifiche di caratteri: UTF-8, ISO-8859-1, Windows-1252, Shift-JIS. Gmail restituisce parti codificate in base64url. IMAP restituisce parti codificate in quoted-printable. La decodifica di una codifica come un'altra produce testo del corpo corrotto che è invisibile nel tuo ambiente di test locale (che probabilmente invia solo email ASCII).

Correggere: Decodificare sempre le parti MIME secondo il loro Content-Transfer-Encoding e codifica nuovamente in UTF-8. Testa specificamente con contenuti di email in giapponese, arabo e con molti emoji.
05
Incoerenze nel threading tra i provider

Costruire una visualizzazione unificata delle conversazioni tra account Gmail, Outlook e IMAP richiede la normalizzazione di tre modelli di threading completamente diversi. Gmail ha ID di conversazione nativi. Outlook ha ID di conversazione che si comportano diversamente. IMAP non ha threading nativo – si ricostruiscono le conversazioni da ID messaggio, Riferimenti, e In-Reply-To intestazioni, che non sono sempre presenti o corrette.

Correggere: Un'API unificata per la lettura delle email come Unipile normalizza la gestione dei thread in un modello coerente tra tutti i provider, eliminando la necessità di implementare una logica di ricostruzione dei thread specifica per ciascun provider.
FAQ

API per la lettura delle email - Domande frequenti

Le domande più frequenti degli sviluppatori che integrano per la prima volta un'API per la lettura di email.

01
Cos'è un'API di lettura delle email?
A leggi email API è un'interfaccia HTTP che consente alla tua applicazione di autenticarsi con la casella di posta esistente di un utente (tramite credenziali OAuth 2.0 o IMAP) e recuperare messaggi di posta elettronica programmaticamente. È distinta dalle API di posta elettronica transazionale come SendGrid o Mailgun, che inviano posta elettronica in uscita da un dominio che controlli. Le API di lettura email operano sull'account Gmail, Outlook o IMAP dell'utente. Vedi il confronto completo dei provider di API per email per fornire un contesto sull'ecosistema più ampio.
02
Posso leggere l'email di qualcuno con un'API?
Puoi leggere email solo da account per i quali il proprietario della casella di posta ha concesso esplicitamente alla tua applicazione l'accesso tramite consenso OAuth 2.0. L'utente deve autorizzare la tua applicazione nella schermata di consenso di Google o Microsoft. Non puoi accedere alle email senza il consenso del proprietario dell'account: tentare di farlo viola i termini di servizio del provider e la legge applicabile nella maggior parte delle giurisdizioni.
03
Come posso leggere le email usando l'API di Gmail?
Per leggere le email con l'API di Gmail: crea un progetto Google Cloud, abilita l'API di Gmail, configura un client OAuth 2.0, richiedi l gmail.solodlettura ambito, ottenere un token di accesso tramite consenso OAuth, quindi chiamare GET /gmail/v1/users/me/messages elencare messaggi e GET /users/me/messages/{id}?format=full per recuperare singole email. I messaggi vengono restituiti come parti MIME codificate in base64url che è necessario decodificare.
04
Qual è la differenza tra IMAP e l'API di Gmail?
L'API di Gmail è una moderna API REST con OAuth 2.0, notifiche push tramite Google Pub/Sub e risposte JSON. IMAP è un protocollo TCP universale supportato da ogni provider di posta elettronica, che utilizza connessioni stateful e comandi di testo. L'API di Gmail è più capace per i casi d'uso esclusivi di Gmail (push in tempo reale, accesso ai thread, gestione delle etichette). IMAP fornisce una copertura universale su tutti i provider, ma richiede connessioni di polling o IDLE e non dispone di un'interfaccia REST nativa. Leggi la nostra Guida all'integrazione dell'API IMAP per un confronto più approfondito.
05
C'è un'API gratuita per leggere le email?
Sì. L'API di Gmail è gratuita entro i limiti di quota di Google (250 unità/sec/utente, 1 miliardo di unità/giorno). Microsoft Graph per Outlook è gratuito con limiti di throttling. IMAP è un protocollo aperto gratuito. Per il supporto multi-provider, Unipile offre una prova gratuita di 7 giorni che copre account collegati Gmail, Outlook e IMAP. Vedi il nostro guida API email gratuita per un confronto completo dei piani gratuiti e dei loro limiti reali.
06
Come posso leggere email da più provider con una sola API?
Usa un'API unificata per la lettura delle email come Unipile. Unipile espone un endpoint singolo (GET /api/v1/email) che restituisce JSON normalizzato per account Gmail, Outlook e IMAP. Autentichi gli utenti una volta tramite un link OAuth ospitato e Unipile gestisce i flussi OAuth specifici del provider, il parsing MIME e l'astrazione dei webhook in tempo reale dietro un'unica interfaccia coerente. Vedi il nostro Guida alle API per le e-mail per riferimento completo.
07
Posso leggere gli allegati delle email tramite API?
Sì. L'API di Gmail restituisce i metadati degli allegati nel payload del messaggio e fornisce un endpoint separato per scaricare i dati degli allegati tramite ID. Microsoft Graph restituisce gli allegati tramite /messaggi/{id}/allegati. IMAP richiede l'analisi dell'albero MIME per identificare le parti degli allegati. Con Unipile, i metadati degli allegati (nome file, dimensione, tipo MIME) sono inclusi nella risposta dell'email e il contenuto degli allegati è disponibile tramite un endpoint dedicato, senza richiedere l'analisi MIME.
08
Come vengo notificato quando arriva una nuova email?
Ogni provider ha un meccanismo diverso: Gmail utilizza le sottoscrizioni push di Google Pub/Sub (scadono ogni 7 giorni, richiedono il rinnovo). Microsoft Graph utilizza le sottoscrizioni di notifica delle modifiche (scadono dopo circa 3 giorni). IMAP utilizza il comando IDLE su una connessione TCP persistente. In alternativa, Unipile astrae tutti e tre in un unico email.ricevuto evento webhook che si attiva per account Gmail, Outlook e IMAP con gestione automatica degli abbonamenti gestita internamente.
09
Quali sono i limiti di frequenza per la lettura delle email su Gmail e Outlook?
API Gmail: 250 unità di quota per utente al secondo. L'elenco dei messaggi costa 5 unità, il recupero di un messaggio completo costa 5 unità. Il limite giornaliero è 1 miliardo di unità di quota. Microsoft Graph: 10.000 richieste ogni 10 minuti per applicazione per tenant. Entrambi restituiscono HTTP 429 quando vengono limitati, con un Ritenta dopo header. Implementa il backoff esponenziale con jitter per l'affidabilità della produzione. I limiti IMAP sono specifici del provider, in genere 10-20 connessioni simultanee per account.
10
La lettura delle email degli utenti tramite API è conforme al GDPR?
La lettura delle email degli utenti tramite API può essere conforme al GDPR se implementata correttamente. I requisiti includono: esplicito consenso dell'utente tramite OAuth (la schermata di consenso soddisfa il requisito della base giuridica), una privacy policy che documenti quali dati delle email si raccolgono e conservano, un meccanismo di eliminazione dei dati per le richieste di cancellazione e un accordo di elaborazione dei dati con qualsiasi livello API di terze parti utilizzato. Unipile è certificato SOC 2 Type II e conforme al GDPR, semplificando la documentazione di conformità per i prodotti realizzati sulla piattaforma.

Avete ancora domande? Parla con uno sviluppatore che ha gestito integrazioni di API per la lettura di email su Gmail, Outlook e IMAP su larga scala.

Parlare con un esperto
it_ITIT