Ricezione di notifiche di mancato recapito

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

Configurazione dell'app per la ricezione delle notifiche di mancato recapito

La configurazione è composta da due parti. Innanzitutto, devi abilitare le notifiche. Secondo, devi impostare la mappatura tra /_ah/bounce e il gestore di rimbalzo, in modo che App Engine sappia dove POSTARE i dati delle notifiche. Per configurare l'app in modo da ricevere le notifiche relative alle email restituite al mittente:

  1. Aggiungi quanto segue al tuo 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 mancato recapito nel tuo codice, ad esempio:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Gestione delle notifiche di mancato recapito

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

Un modo per scrivere un gestore di rimbalzo è utilizzare la classe di comodità BounceNotificationHandler. Se segui questa route, dovrai eseguire l'override del relativo metodo receive(), che viene chiamato con un argomento della classe BounceNotification. Indipendentemente dal fatto che utilizzi o meno la classe di convenienza BounceNotificationHandler, devi utilizzare BounceNotification per analizzare le notifiche di mancato recapito.

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

Ecco un esempio di gestore di 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)