Receção de notificações de rejeição

Para receber notificações de rejeição de email, tem de configurar a sua app para ativar a notificação por email e criar um controlador para processar essas notificações.

Configurar a sua app para receber notificações de rejeição

A configuração tem duas partes. Primeiro, tem de ativar a notificação. Em segundo lugar, tem de definir o mapeamento entre /_ah/bounce e o seu controlador de rejeições, para que o App Engine saiba onde POSTar os dados de notificação. Para configurar a sua app para receber notificações de emails rejeitados:

  1. Adicione o seguinte ao ficheiro 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 controlador de notificações de rejeição no seu código, por exemplo:
    - url: /_ah/bounce
      script: handle_bounced_email.app
      login: admin

Processamento de notificações de rejeição

Uma notificação de rejeição é uma mensagem automática de um sistema de email a indicar que houve um problema com a entrega da mensagem. Na sua app, tem de criar código do controlador de rejeições para receber e processar estas notificações.

Uma forma de escrever um controlador de rejeições é usar a classe de conveniência BounceNotificationHandler. Se optar por esta abordagem, tem de substituir o método receive(), que é chamado com um argumento da classe BounceNotification. Quer use ou não a BounceNotificationHandlerclasse de conveniência, tem de usar BounceNotification para analisar as notificações de rejeição.

Tanto o BounceNotificationHandler como o BounceNotification estão incluídos no pacote google.appengine.ext.webapp.mail_handlers.

Segue-se um exemplo de um controlador 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)