我想通过 App Engine 接收收到的电子邮件。我正在获取所有内容并将其全部放入存储中。我从here发现我可以使用下面的代码来接收电子邮件
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
但仅当服务仅作为默认值时(没有 service: my_email_service 行),它才有效。当我尝试创建其他服务(不是默认服务)时,只需将服务名称添加到 app.yaml 中(服务:my_email_service) - 它不起作用。我发送消息,但什么也没收到,没有日志,没有消息。有什么办法可以解决吗?我的产品中已经有默认服务,但我需要使用另一个服务来获取传入消息。
我尝试使用dispatch.yaml link但没有结果。仅当服务为默认时,所有功能才有效。有什么想法吗? 我的dispatch.yaml:
dispatch:
- url: "*/get_emails/*"
service: my_email_service
还尝试在调度中使用 url,例如:
[email protected]
也许这些完全是另一个代码/解决方案
这可能是因为您发送电子邮件到的电子邮件地址没有以您的服务名称为前缀。
如果您查看链接到的文档,它会说
对于非默认服务,电子邮件地址的格式如下:
[STRING]@[服务名称]-dot-[Google Cloud 项目 ID].appspotmail.com