Ricezione di notifiche di mancato recapito

Per ricevere notifiche di mancato recapito delle email, devi configurare l'app in modo da abilitare le notifiche via email e creare un gestore per la gestione di queste notifiche.

Configurare l'app per ricevere notifiche di rimbalzo

La configurazione è composta da due parti. Innanzitutto, devi abilitare la notifica. In secondo luogo, devi impostare la mappatura tra /_ah/bounce e il gestore di rimbalzo, in modo che App Engine sappia dove pubblicare i dati delle notifiche. Per configurare l'app in modo che riceva le notifiche per le email non recapitate, procedi nel seguente modo:

  1. Aggiungi quanto segue al file app.yaml per attivare le notifiche:
    inbound_services:
    - mail_bounce
  2. Sempre in app.yaml, dichiara una mappatura tra /_ah/bounce e il gestore delle notifiche di rimbalzo nel codice, ad esempio:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Gestione delle notifiche di rimbalzo

Una notifica di mancato recapito è un messaggio automatico proveniente da un sistema email che indica che si è verificato un problema con il recapito dei messaggi. Nella tua app, dovrai creare un codice gestore dei rimbalzo per ricevere ed elaborare queste notifiche.

Un modo per scrivere un gestore del rimbalzo è utilizzare la classe di convenienza BounceNotificationHandler. Se segui questo percorso, dovrai eseguire l'override del metodo receive(), che viene chiamato con un argomento della classe BounceNotification. Che utilizzi o meno la classe di convenienza BounceNotificationHandler, devi utilizzare BounceNotification per analizzare le notifiche di rimbalzo.

Sia BounceNotificationHandler che BounceNotification sono nel pacchetto google.appengine.ext.webapp.mail_handlers.

Ecco un esempio di gestore del rimbalzo che utilizza la classe di convenienza BounceNotificationHandler:

class LogBounceHandler(BounceNotificationHandler):
    def receive(self, bounce_message):
        logging.info('Received bounce post ... [%s]', self.request)
        logging.info('Bounce original: %s', bounce_message.original)
        logging.info('Bounce notification: %s', bounce_message.notification)