new App Engine service for incoming emails

54 views Asked by At

I want to get incoming emails via App Engine. I am getting all content and putting it all into Storage. I found from here that I could use the code below to get emails

main.py:

from flask import Flask, request
from google.appengine.api import mail
from google.appengine.api import wrap_wsgi_app
import requests

app = Flask(__name__)

app.wsgi_app = wrap_wsgi_app(app.wsgi_app)

@app.route("/_ah/mail/<path>", methods=["POST"])
def receive_mail(path):
    try:
        message = mail.InboundEmailMessage(request.get_data())
        for content_type, payload in message.bodies():
            if content_type == 'text/html':
                html_content = payload.decode()
                print('HTML content retrieved successfully.')
..................................

app.yaml:

service: my_email_service
runtime: python39
app_engine_apis: true

inbound_services:
- mail

handlers:
- url: /_ah/mail/get_emails
  script: main.app

But it works only if the service only as default (without service: my_email_service line). When I try to make the other service, not default, just add to app.yaml the service name (service: my_email_service) - it doesn't work. I send the message and I am getting nothing, no logs, no message. Is any way to resolve it? I already have the default service in my prod but I need to use another service to get incoming messages.

I tried to use dispatch.yaml link but without result. All works only when the service is default. Any thoughts, please? my dispatch.yaml:

dispatch:
  - url: "*/get_emails/*"
    service: my_email_service

also tried in dispatch use url like: [email protected]

Maybe these is totally another code/solution

1

There are 1 answers

1
NoCommandLine On BEST ANSWER

That's probably because you're sending emails to email addresses which aren't prefixed by your service name.

If you look at the documentation you linked to, it says

For non-default services, the email address has the following format:

[STRING]@[servicename]-dot-[Google Cloud project ID].appspotmail.com