Ricezione di notifiche di mancato recapito

Per ricevere notifiche di ritorno email, devi configurare la tua app per attivare la notifica via email e creare un gestore per gestire queste notifiche.

Configurare l'app per ricevere notifiche di mancata consegna

La configurazione è composta da due parti. Innanzitutto, devi attivare la notifica. In secondo luogo, devi impostare la mappatura tra /_ah/bounce e il gestore dei rilanci, in modo che App Engine sappia dove POSTare i dati di notifica. Per configurare l'app in modo che riceva notifiche email per i messaggi che non sono stati recapitati:

  1. Aggiungi quanto segue al tuo file app.yaml per attivare la notifica:
    inbound_services:
    - mail_bounce
  2. Sempre in app.yaml, dichiara una mappatura tra /_ah/bounce e il gestore delle notifiche di bounce nel 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 di un sistema email che indica che si è verificato un problema con il recapito del messaggio. Nella tua app, dovrai creare il codice del gestore dei rimbalzi per ricevere e elaborare queste notifiche.

Un modo per scrivere un gestore dei rimbalzi è utilizzare la classe di utilità BounceNotificationHandler. Se scegli questa strada, dovrai sostituire il metodo receive(), che viene chiamato con un argomento della classe BounceNotification. Indipendentemente dall'utilizzo o meno della classe di utilità BounceNotificationHandler, devi utilizzare BounceNotification per analizzare le notifiche di recapito non riuscito.

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

Ecco un gestore di abbandono di esempio che utilizza la classe di utilità 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)