I messaggi email inviati alla tua app vengono implementati come richieste HTTP contenenti dati MIME. Per elaborare i messaggi email in arrivo, devi associare gli indirizzi email ai gestori di script nella configurazione dell'app, quindi includere i gestori nel codice dell'app.
La posta in arrivo genera richieste HTTP, che vengono passate agli script appropriati. Gli script che gestiscono la posta in arrivo devono risiedere nel tuo servizio predefinito.
Per ulteriori informazioni sul servizio di posta, consulta la panoramica dell'API Mail.
Configurazione dell'applicazione per la ricezione di email
Quando crei una nuova app, la posta in arrivo è disattivata per impostazione predefinita. Per attivare
l'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 la posta in arrivo includendo questa sezione nel file di configurazione, la posta in arrivo viene disattivata e i messaggi email inviati all'app vengono ignorati.
Aggiungi mappature che associano gli indirizzi email mappati agli 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 delle email ai gestori nel file
app.yaml
:Nell'esempio precedente,
/_ah/mail/.+
associa 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 abbinati a questo elenco dal primo all'ultimo, quindi se l'URL di un messaggio email corrisponde a più pattern, il primo gestore corrispondente sarà quello eseguito. Ciò ti consente di includere un handle "catchall" come ultima mappatura. I gestori vengono eseguiti nel modulo predefinito (o nella versione dell'applicazione).
Gestione della posta in arrivo
L'SDK Python definisce InboundMailHandler
, una classe dell'app web per la gestione delle email in arrivo. InboundMailHandler
è nel pacchetto
google.appengine.ext.webapp.mail_handlers
.
Per usare InboundMailHandler
:
- Crea una sottoclasse per
InboundMailHandler
e sostituisci il metodoreceive()
. - Richiama il metodo
receive()
con un argomento della classeInboundEmailMessage
, definita dall'SDK Python.
Ad esempio, puoi creare un'istanza di InboundEmailMessage
come questa:
InboundMailHandler
contiene un metodo della classe di convenienza mapping()
che
restituisce una coppia che corrisponde a tutti gli indirizzi email in arrivo al gestore della posta e, ovviamente,
puoi chiamarla in qualsiasi sottoclasse di InboundMailHandler
che codifichi:
L'oggetto InboundEmailMessage
(mail_message
in questo esempio) contiene il messaggio email. Il suo metodo bodies()
restituisce il corpo del messaggio. Se chiami bodies()
senza argomenti, restituisce un iteratore che restituisce prima corpi HTML e poi corpi di testo normale. Se vuoi solo HTML o testo normale,
puoi passare un argomento a bodies()
:
L'oggetto InboundEmailMessage
include attributi per accedere ad altri campi dei messaggi:
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 di destinatari in Cc, ad esempio"Joe <joe@example.com>, Bill <bill@example.com>"
.date
restituisce la data del messaggio.attachments
è un elenco di oggettiAttachment
, possibilmente vuoti.original
è il messaggio completo, inclusi i dati non esposti dagli altri campi, come le intestazioni delle email, comeemail.message.Message
Python.
Simulazione dei messaggi in arrivo con il server di sviluppo locale
Dopo aver configurato l'app per gestire la posta 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 all'indirizzo 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 ulteriori informazioni, incluso come eseguire il server di sviluppo, vedi il server di sviluppo Python.