Recevoir une notification de non-distribution

Afin de recevoir des notifications de non-distribution d'e-mail, vous devez configurer votre application pour activer les notifications par e-mail et créer un gestionnaire pour les gérer.

Configurer votre application pour recevoir des notifications de non-distribution

La configuration s'effectue en deux étapes. Tout d'abord, vous devez activer les notifications. Ensuite, vous devez définir le mappage entre /_ah/bounce et votre gestionnaire de non-distribution, afin qu'App Engine sache où PUBLIER les informations de notification. Pour configurer votre application de manière à recevoir des notifications de non-distribution, procédez comme suit :

  1. Ajoutez la ligne suivante à votre fichier app.yaml pour activer les notifications :
    inbound_services:
    - mail_bounce
  2. Toujours dans app.yaml, déclarez dans votre code un mappage entre /_ah/bounce et le gestionnaire de notifications de non-distribution, par exemple :
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Gérer les notifications de non-distribution

Une notification de non-distribution est un message automatisé envoyé par un système de messagerie et qui indique un problème de remise des messages. Dans votre application, vous devez créer le code d'un gestionnaire de notifications de non-distribution pour recevoir et traiter ces notifications.

Pour écrire le code d'un gestionnaire de notifications de non-distribution, vous pouvez utiliser la classe simplifiée BounceNotificationHandler. Si vous procédez ainsi, vous devrez ignorer sa méthode receive(), qui est appelée avec un argument de la classe BounceNotification. Que vous utilisiez la classe simplifiée BounceNotificationHandler ou non, vous devez utiliser BounceNotification pour analyser les notifications de non-distribution.

BounceNotificationHandler et BounceNotification figurent tous deux dans le package google.appengine.ext.webapp.mail_handlers.

Voici un exemple de gestionnaire de non-distribution, qui utilise la classe simplifiée 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)