Questa guida descrive come utilizzare l'API Mail per ricevere posta.
I messaggi email inviati alla tua app vengono implementati come richieste HTTP contenenti dati MIME. Per elaborare i messaggi email in arrivo, associa gli indirizzi email ai gestori di script nella configurazione dell'app, quindi includi i gestori nel codice dell'app.
L'email in arrivo genera richieste HTTP, che vengono trasmesse agli script appropriati. Gli script che gestiscono l'email in arrivo devono risiedere nel servizio predefinito.
Per saperne di più sul servizio Mail, consulta la panoramica dell'API Mail.
Prima di iniziare
Devi registrare le email del mittente come mittenti autorizzati. Per ulteriori informazioni, vedi Chi può inviare email.
Configurazione dell'applicazione per ricevere email
Quando crei una nuova app, la ricezione di email è disattivata per impostazione predefinita. Per attivare
l'email in arrivo, devi modificare il file app.yaml nel servizio predefinito.
Aggiungi una sezione
inbound_servicesche attiva il servizio di posta in arrivo. Ad esempio:Se non attivi le email in entrata includendo questa sezione nel file di configurazione, le email in entrata vengono disattivate e i messaggi email inviati all'app vengono ignorati.
Aggiungi mappature che associano indirizzi email mappati tramite URL ai gestori di script.
Per il servizio predefinito, l'indirizzo email per la ricezione di email ha il seguente formato:
[STRING]@[Google Cloud project ID].appspotmail.comPer i servizi non predefiniti, l'indirizzo email ha il seguente formato:
[STRING]@[servicename]-dot-[Google Cloud project ID].appspotmail.comI messaggi email vengono inviati alla tua app come richieste POST HTTP utilizzando il seguente URL, dove [ADDRESS] è un indirizzo email completo, incluso il nome di dominio:
/_ah/mail/[ADDRESS]Per gestire le email in arrivo nella tua app, mappa gli URL delle email ai gestori nel file
app.yaml:Nell'esempio precedente,
/_ah/mail/.+corrisponde a tutte le email indirizzate all'app. Se preferisci, puoi configurare più gestori per indirizzi email diversi, come nell'esempio seguente:Gli URL dei messaggi email in arrivo vengono confrontati con questo elenco dal primo all'ultimo, quindi se l'URL di un messaggio email corrisponde a più di un pattern, verrà eseguito il primo gestore corrispondente. In questo modo, puoi includere un gestore "catchall" come ultima mappatura. I gestori vengono eseguiti nel modulo predefinito (o nella versione dell'applicazione).
Gestione delle email in arrivo
Quando utilizzi i framework web Python, il costruttore InboundEmailMessage accetta
i byte del corpo della richiesta HTTP. Esistono diversi modi per creare l'oggetto
InboundEmailMessage in Python. In Flask, request.get_data()
fornisce i byte della richiesta.
L'oggetto InboundEmailMessage contiene il
messaggio email. Il relativo metodo bodies() restituisce i corpi all'interno del messaggio. Se
chiami bodies() senza argomenti, viene restituito un iteratore che genera prima i corpi HTML
e poi i corpi di testo normale. Se vuoi solo HTML o solo testo normale,
puoi passare un argomento a bodies():
L'oggetto InboundEmailMessage include attributi per accedere ad altri campi del messaggio:
subjectcontiene l'oggetto del messaggio.senderè l'indirizzo del mittente, ad esempio"Nobody <nobody@example.com>".toè un elenco separato da virgole dei destinatari principali del messaggio, ad esempio"Joe <joe@example.com>, Bill <bill@example.com>".cccontiene un elenco separato da virgole dei destinatari in copia conoscenza, ad esempio"Joe <joe@example.com>, Bill <bill@example.com>".daterestituisce la data del messaggio.attachmentsè un elenco di oggettiAttachment, eventualmente vuoto.originalè il messaggio completo, inclusi i dati non esposti dagli altri campi, come le intestazioni email, comeemail.message.MessagePython.
Simulare i messaggi in arrivo con il server di sviluppo locale
Dopo aver configurato l'app per gestire le email in arrivo, puoi utilizzare la console del server di sviluppo per simulare i messaggi email in arrivo:
- Accedi al server di sviluppo come amministratore andando alla pagina http://localhost:8080/console e selezionando Accedi come amministratore.
- Nel server di sviluppo, fai clic su Posta in entrata nel menu di navigazione.
Compila il modulo visualizzato e fai clic su Invia email.
Per avviare il server di sviluppo, consulta il server di sviluppo locale.
Scopri di più sulle considerazioni sulla migrazione per l'API Mail nella guida Gestori di posta.