Recibir notificación de rebote

Para recibir notificaciones de rebote de correo electrónico, debe configurar su aplicación para habilitar las notificaciones por correo electrónico y crear un controlador para gestionar esas notificaciones.

Configurar tu aplicación para recibir notificaciones de rebote

La configuración consta de dos partes. Primero, debes habilitar las notificaciones. En segundo lugar, debes definir la asignación entre /_ah/bounce y tu controlador de rebotes para que App Engine sepa dónde enviar los datos de notificación. Para configurar tu aplicación de forma que reciba notificaciones de rebote de correo, sigue estos pasos:

  1. Añade 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

Gestionar notificaciones de rebote

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

Una forma de escribir un controlador de rebote es usar la clase de conveniencia BounceNotificationHandler. Si sigues este método, tendrás que anular su método receive(), al que se llama con un argumento de la clase BounceNotification. Tanto si usas la clase de conveniencia BounceNotificationHandler como si no, debes usar BounceNotification para analizar las notificaciones de rebote.

Tanto BounceNotificationHandler como BounceNotification están en el paquete google.appengine.ext.webapp.mail_handlers.

A continuación, se muestra un ejemplo de controlador de rebotes 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)