python3 使用 google-app-engine 接收电子邮件,如何配置到特定应用程序,而不是默认应用程序

python3 use google-app-engine receive email, how to configure to specific app, not default app

我可以在google-app-engine的默认服务接收eamil,地址是anystring@my-appid.appspotmail.com,但我需要发送到特定的服务,不是默认服务,我该怎么做,下面是我的代码,在此先感谢。

app.yaml

runtime: python39 
app_engine_apis: true 
service: target-service
inbound_services: 
- mail 
- mail_bounce

句柄code:main.py

from flask import Flask, request
from google.appengine.api import wrap_wsgi_app
from google.appengine.api import mail
app = Flask(__name__)
app.wsgi_app = wrap_wsgi_app(app.wsgi_app, use_deferred=True)
@app.route('/_ah/mail/<path>', methods=['POST'])
def receive_mail(path):
    mail_message = mail.InboundEmailMessage(request.get_data())
    print("called")
    return 'Success'

为了能够在 App Engine 中使用特定服务,您需要在 app.yaml:

中指定它
service: service-name

此外,如果您计划在您的应用中使用多项服务,这里有一个 documentation 可用于构建您的应用。

刚刚在 Python2.7 中测试了这个,但我相信它应该在 Python3 中工作(邮件部分的原则应该是相同的,但可能需要一些调整其他地方)

  1. 我有一个带有 app.yaml 文件的 default 服务和另一个名为 second-service 的服务,带有 second-service.yaml.

  2. 将以下内容添加到 app.yamlsecond-service.yaml 文件

    inbound_services:
        - mail
  1. 将此添加到 second-service.yaml 请注意,我的 python 文件在此处称为 second.py。它处理路由到 second-service
  2. 的流量
- url: /_ah/mail/.+
  script: second.app
  1. 将此添加到 app.yaml 请注意,我的 python 文件在此处称为 ``main.py```。
- url: /_ah/mail/.+
  script: main.app
  1. main.pysecond.py
  2. 添加了以下内容
@app.route('/_ah/mail/<path>', methods=['POST'])
def receive_mail(path):
    mail_message = mail.InboundEmailMessage(request.get_data())
    logging.info(mail_message.subject)
    return 'Success'
  1. 为了测试,我向以下地址发送了电子邮件,它们仅由各自的服务接收。

注意:我使用 -dot- 而不是 . 作为 multi-service 位。

a) 支持@second-service-dot-.appspotmail.com

b) 支持@.appspotmail.com

最后一点:我只有 service: second-service second-service.yaml