2016-04-06 15 views
0

私はスタックのオーバーフローについて読んできましたが、今まで私にとってはうまくいく解決策が見つかりませんでした。私は自分のアプリに着信電子メールを処理し、最終的に添付ファイルで作業できるようにしたいが、私は問題に直面している。"POST /_ah/mail/.+" returns 404

app.yamlを

application: egg-api 
runtime: python27 
api_version: 1 
threadsafe: yes 

builtins: 
- remote_api: on 

# Activate email receiving 

inbound_services: 
- mail 

# This handler tells app engine how to route requests to a WSGI  application. 
- url: .* # This regex directs all routes to main.app 
    script: main.app 
- url: /_ah/mail/[email protected] # route everything to handle incoming 
    script: handle_incoming_email.app 
    login: admin 
# Third party libraries 
libraries: 
- name: jinja2 
    version: latest 
- name: lxml 
    version: latest 
- name: webapp2 
    version: latest 
- name: MySQLdb 
    version: latest 

に成功dev_appserverを開始した後handle_incoming_email.py

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


class LogSenderHandler(InboundMailHandler): 
    def receive(self, mail_message): 
     logging.info("Received a message from: " + mail_message.sender) 


app = webapp2.WSGIApplication([LogSenderHandler.mapping()], debug=True) 

http://localhost:8000/mailから 私は[email protected]に電子メールを送信しよう.comしかし私は得る:

INFO  2016-04-06 21:31:26,549 module.py:787] default: "POST /_ah/mail/info%40egg-api.appspotmail.com HTTP/1.1" 404 106 

私がhttp://localhost:8080/_ah/loginにアクセスしたとき、私は何を入力するか分からない。任意の助け

おかげ

- url: /_ah/mail/[email protected] 

、すなわち特定のハンドラの後に

答えて

2

移動し、一般的なハンドラ

- url: .* 

- url: /_ah/mail/[email protected] # route everything to handle incoming 
    script: handle_incoming_email.app 
    login: admin 
- url: .* # This regex directs all routes to main.app 
    script: main.app 

それ以外の場合は、一般的なURLのルールがあります適用f irst、404になりました。

+0

Chrisさん、ありがとうございました! – ciacicode

+0

[regex](https://stackoverflow.com/a/15465283/4058484)の設定も機能します。 – hyip