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.
Le email in arrivo generano richieste HTTP, che vengono passate agli script appropriati. Gli script che gestiscono le email in arrivo devono trovarsi nel servizio predefinito.
Per ulteriori informazioni sul servizio Mail, consulta la Panoramica dell'API Mail.
Configurare l'applicazione per ricevere email
Quando crei una nuova app, le email in arrivo sono disattivate per impostazione predefinita. Per attivare le email in arrivo, devi modificare il file app.yaml
nel servizio predefinito.
Aggiungi una sezione
inbound_services
che attivi il servizio email in arrivo. Ad esempio:Se non attivi le email in arrivo includendo questa sezione nel file di configurazione, le email in arrivo vengono disattivate e i messaggi inviati all'app vengono ignorati.
Aggiungi mappature che associano gli indirizzi email mappati tramite URL ai gestori di script.
Per il servizio predefinito, l'indirizzo email per la ricezione delle email ha il seguente formato:
[STRING]@[Google Cloud project ID].appspotmail.com
Per i servizi non predefiniti, l'indirizzo email ha il seguente formato:
[STRING]@[servicename]-dot-[Google Cloud project ID].appspotmail.com
I 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 email agli handler nel file
app.yaml
:Nell'esempio riportato sopra,
/_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 associati a questo elenco dal primo all'ultimo, quindi se l'URL di un messaggio email corrisponde a più pattern, verrà eseguito il primo gestore corrispondente. In questo modo puoi includere un gestore "generico" come ultima mappatura. Gli handler vengono eseguiti nel modulo predefinito (o nella versione dell'applicazione).
Gestione delle email in arrivo
L'SDK Python definisce InboundMailHandler
, una classe webapp per la gestione
delle email in arrivo. InboundMailHandler
è nel
google.appengine.ext.webapp.mail_handlers
package.
Per utilizzare InboundMailHandler
:
- Crea una sottoclasse per
InboundMailHandler
e sostituisci il metodoreceive()
. - Chiama il metodo
receive()
con un argomento della classeInboundEmailMessage
, definito dall'SDK Python.
Ad esempio, puoi creare un'istanza di InboundEmailMessage
come questa:
InboundMailHandler
contiene un metodo di classe di utilità mapping()
che
restituisce una coppia che abbina tutti gli indirizzi email in arrivo al gestore della posta e, ovviamente, puoi chiamarlo su qualsiasi sottoclasse di InboundMailHandler
che codifichi:
L'oggetto InboundEmailMessage
(mail_message
in questo esempio) contiene il messaggio email. Il metodo bodies()
restituisce i testi all'interno del messaggio. Se chiami bodies()
senza argomenti, viene restituito un iteratore che genera prima i testi in HTML e poi i testi in 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:
subject
contiene 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>"
.cc
contiene un elenco separato da virgole dei destinatari Cc, ad esempio"Joe <joe@example.com>, Bill <bill@example.com>"
.date
restituisce la data del messaggio.attachments
è un elenco diAttachment
oggetti, eventualmente vuoto.original
è il messaggio completo, inclusi i dati non esposti dagli altri campi, come le intestazioni email, comeemail.message.Message
di Python.
Simulazione dei 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 all'indirizzo http://localhost:8080/console e seleziona Accedi come amministratore.
- Nel server di sviluppo, fai clic su Posta in arrivo nel riquadro di navigazione.
Compila il modulo visualizzato e fai clic su Invia email.
Per scoprire di più, inclusa la procedura per avviare il server di sviluppo, consulta il server di sviluppo Python.