Cómo recibir notificaciones de rebote

Si deseas recibir notificaciones de rebote de correo electrónico, necesitas configurar tu app para habilitar las notificaciones por correo electrónico y crear un controlador que las administre.

Configura tu app para recibir notificaciones de rebote

La configuración tiene dos partes. En primer lugar, tienes que habilitar las notificaciones. En segundo lugar, debes establecer la asignación entre /_ah/bounce y tu controlador de rebote, para que App Engine sepa dónde enviar como POST los datos de las notificaciones. Para configurar tu app de modo que puedas recibir notificaciones de rebote por correo electrónico, sigue estos pasos:

  1. Agrega lo siguiente a tu archivo app.yaml para habilitar las notificaciones:
    inbound_services:
    - mail_bounce
  2. También en app.yaml, declara una asignación entre /_ah/bounce y el controlador de notificaciones de rebote en tu código, por ejemplo:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Maneja las notificaciones de rebote

Una notificación de rebote es un mensaje automático enviado por un sistema de correo electrónico donde se informa que ha habido un problema con la entrega del mensaje. En tu aplicación, tendrás que crear un código de controlador de rebote para recibir y procesar estas notificaciones.

Una forma de escribir un controlador de rebote es usar la clase de conveniencia BounceNotificationHandler. Si eliges esta opción, deberás anular su método receive(), al que se llama con un argumento de la clase BounceNotification. Por más que no uses la clase de conveniencia BounceNotificationHandler, debes usar BounceNotification para analizar las notificaciones de rebote.

Tanto BounceNotificationHandler como BounceNotification se encuentran en el paquete google.appengine.ext.webapp.mail_handlers.

A continuación, puedes ver una muestra de controlador de rebote que usa la clase de conveniencia 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)