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 le email restituite al mittente Notifiche:

  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 rimbalzo nel tuo codice, per esempio:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Gestione delle notifiche di rimbalzo

Una notifica di rimbalzo è una messaggio automatico da un sistema email che si è verificato un problema con il messaggio la distribuzione dei contenuti. Nella tua app, dovrai creare un codice di 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 questo percorso, dovrai eseguirne l'override receive(), che viene chiamato con un dell'argomento 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)