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 l'application pour les notifications de non-distribution d'e-mails

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 :

  • Ajoutez la ligne suivante à votre fichier app.yaml pour activer les notifications :

    inbound_services:
        - mail_bounce
    
  • 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.

Voici un exemple de gestionnaire de non-distribution, qui utilise la classe simplifiée BounceNotificationHandler :

@app.route("/_ah/bounce", methods=["POST"])
def receive_bounce():
    bounce_message = mail.BounceNotification(dict(request.form.lists()))

    # Do something with the message
    print("Bounce original: ", bounce_message.original)
    print("Bounce notification: ", bounce_message.notification)

    return "OK", 200

Pour en savoir plus sur les migrations pour l'API Mail, consultez le guide sur les gestionnaires de messagerie.