0

У меня есть проект google endpoints с использованием чистого python, я использую встроенный mail для отправки писем. Но по некоторым причинам электронные письма не доходят до получателя (квота не исчерпана). Поэтому я решил создать уведомитель отказов. Я сделал это до сих пор.Можно ли получать уведомления об отказе по электронной почте для Google App Engine - python?

app.yaml

inbound_services: 
- mail_bounce 
handlers: 
- url: /_ah/bounce 
    script: applications.APPLICATION 
    login: admin 

applications.py

from app.api.bounce.api import Bounce 

APPLICATION = endpoints.api_server([Bounce]) 

bounce.py

import endpoints 
import logging 

from protorpc import remote, message_types 

from google.appengine.ext.webapp.mail_handlers import BounceNotification 
from google.appengine.ext.webapp.mail_handlers import BounceNotificationHandler 
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler 
from app.messages.auth import OutputAdminUserMessage 


@endpoints.api(name='bounce', version='v1') 
class Bounce(remote.Service): 
    @endpoints.method(message_types.VoidMessage, OutputAdminUserMessage, 
         path="bounce", http_method="POST", 
         name="bounce") 
    def post(self, request): 
     bounce = BounceNotification(request.POST) 
     logging.info('Bounce original: %s', bounce.original) 
     logging.info('Bounce notification: %s', bounce.notification) 

И это, кажется, не работает этот API не ударил, когда я попробуйте отправить электронное письмо на адрес [email protected] Любая помощь действительно ценится.

ответ

1

Ответ на свой вопрос

Вы не можете установить это с помощью Appengine конечной точки Google. Я использовал webapp2 для его настройки.

handle_bounced_email.py

import logging 
import webapp2 
from google.appengine.api import mail 
from google.appengine.ext.webapp.mail_handlers import BounceNotification 
from google.appengine.ext.webapp.mail_handlers import BounceNotificationHandler 

class LogBounceHandler(BounceNotificationHandler): 
    def receive(self, bounce_message): 
     mail.send_mail(to='[email protected]', sender='[email protected]', subject='Bounced email', 
         body=str(self.request)) 
     logging.info('Received bounce post ... [%s]', self.request) 
     logging.info('Bounce original: %s', bounce_message.original) 
     logging.info('Bounce notification: %s', bounce_message.notification) 

class BounceHandler(webapp2.RequestHandler): 
    def post(self): 
     bounce = BounceNotification(self.request.POST) 
     logging.info('Bounce original: %s', bounce.original) 
     logging.info('Bounce notification: %s', bounce.notification) 

app = webapp2.WSGIApplication([ 
    ('/_ah/bounce', LogBounceHandler), 
], debug=True) 

Теперь в app.yaml добавить эти

inbound_services: 
- mail_bounce 

- url: /_ah/bounce 
    script: handle_bounced_email.app 
    login: admin 

login:admin позволяет только административные пользователи использовать этот адрес