Notice: Over the next few months, we're reorganizing the App Engine documentation site to make it easier to find content and better align with the rest of Google Cloud products. The same content will be available, but the navigation will now match the rest of the Cloud products. If you have feedback or questions as you navigate the site, click Send Feedback.

Python 2 is no longer supported by the community. We recommend that you migrate Python 2 apps to Python 3.

Receiving Bounce Notification

Stay organized with collections Save and categorize content based on your preferences.

In order to receive email bounce notifications, you need to configure your app to enable email notification and you need to create a handler to handle those notifications.

Configuring Your App to Receive Bounce Notifications

There are two parts to the configuration. First, you need to enable notification. Second, you need to set the mapping between /_ah/bounce and your bounce handler, so App Engine knows where to POST the notification data. To configure your app to receive bounced email notifications:

  1. Add the following to your app.yaml file to enable notification:
    inbound_services:
    - mail_bounce
  2. Also in app.yaml, declare a mapping between /_ah/bounce and the bounce notification handler in your code, for example:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Handling Bounce Notifications

A bounce notification is an automated message from an email system that there's been a problem with message delivery. In your app, you'll need to create bounce handler code to receive and process these notifications.

One way to write a bounce handler is to use the BounceNotificationHandler convenience class. If you go this route, you'll need to override its receive() method, which is called with an argument of the BounceNotification class. Whether you use the BounceNotificationHandler convenience class or not, you do need to use BounceNotification to parse the bounce notifications.

Both BounceNotificationHandler and BounceNotification are in the google.appengine.ext.webapp.mail_handlers package.

Here is a sample bounce handler that uses the BounceNotificationHandler convenience class:

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)