Receber notificações de rejeição

Para receber notificações de rejeição de e-mails, configure o aplicativo para ativá-las e crie um gerenciador para elas.

Como configurar o aplicativo para receber notificações de rejeição

A configuração se divide em duas partes. Primeiro, é preciso ativar a notificação. Segundo, você precisa definir o mapeamento entre /_ah/bounce e seu gerenciador de rejeição para que o App Engine saiba onde POSTAR os dados de notificação. Para configurar o aplicativo e receber notificações de rejeição de e-mails:

  1. Adicione o seguinte ao seu arquivo app.yaml para ativar a notificação:
    inbound_services:
    - mail_bounce
  2. Além disso, em app.yaml, declare um mapeamento entre /_ah/bounce e o gerenciador de notificações de rejeição no seu código, por exemplo:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Como processar notificações de rejeição

Uma notificação de rejeição é uma mensagem automatizada de um sistema de e-mail em que houve um problema na entrega da mensagem. No app, você precisará criar um código do gerenciador de rejeição para receber e processar essas notificações.

Uma maneira de escrever um gerenciador de rejeição é usar a classe prática BounceNotificationHandler. Se você fizer isso, será necessário modificar o método receive(), que é chamado com um argumento da classe BounceNotification. Se você usar a classe de conveniência BounceNotificationHandler ou não, será necessário usar BounceNotification para analisar as notificações de rejeição.

BounceNotificationHandler e BounceNotification estão no pacote google.appengine.ext.webapp.mail_handlers.

Veja aqui um exemplo de gerenciador de rejeições que usa a classe de conveniência 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)