0

私の Google App Engine アプリは、電子メールの宛先を含むさまざまな受信電子メールを保存したいと考えています。意図した受信者を見つけることができるように、メールが投稿された URL を調べる方法を見つけようとしています。

app.yaml には次のものがあります。

inbound_services:
- mail
handlers:
- url: /_ah/mail/.+ 
  script: handle_incoming_email.py 
  login: admin

Python スクリプトには次のものがあります。

class Message(db.Model):
    recipient = db.stringProperty()
    subject = db.stringProperty()
    # etc.

class MyMailHandler(InboundMailHandler):
    def receive(self, mail_message):
        msg = Message(subject=mail_message.subject, recipient=???)
        msg.put()

application = webapp.WSGIApplication([MyMailHandler.mapping()], debug=True)

したがって、電子メールが john@myapp.appspot.com に送信された場合、受信者は john@myapp.appspot.com になります。電子メールが jane@myapp.appspot.com に送信された場合、受信者は jane@myapp.appspot.com などになります。

mail_message.to フィールドをふるいにかけることができることはわかっていますが、実際の着信 URL を見たいと思います。それは簡単なように思えますが、私はそれを理解できません。

4

2 に答える 2

1

アドレスはハンドラー URL にあり、self.request.path を見て取得できますが、実際には mail_message を使用してこの値を取得する必要があります。

于 2012-06-20T06:27:26.513 に答える
0

OK、ソースに行って receive() と mapping() が何をするかを調べました。私はこのようにやりたいことをやった:

class MyEmailHandler(InboundMailHandler):
    def post(self,recipient):
        # 'recipient' is the captured group from the below webapp2 route
        mail_message = mail.InboundEmailMessage(self.request.body)
        # do stuff with mail_message based on who recipient is

app = webapp2.WSGIApplication(
    [(r'/_ah/mail/(.+)@.+\.appspotmail\.com',MyEmailHandler)],
    debug=True)

webapp2 ルーターを使用すると、グループをキャプチャして、ハンドラーに引数として送信できます。ここで、キャプチャされたグループは、recipient@myapp.appspotmail.com の「受信者」です。ただし、mapping() コンビニエンス関数 (この場合はとにかく何もしません) やハンドラーの receive メソッド (実際には、要求から電子メール メッセージを取得し、それを args に入れるだけです) を使用することはできません。受け取る。)

于 2012-06-21T17:45:13.073 に答える