Я читаю учебник о Receiving Mail. Я обновил файл app.yaml в соответствии с инструкциями:Получение почты в Google App Engine
application: hello-1-world
version: 1
runtime: python
api_version: 1
handlers:
- url: /favicon.ico
static_files: static/images/favicon.ico
upload: static/images/favicon.ico
- url: /_ah/mail/.+
script: handle_incoming_email.py
login: admin
- url: /.*
script: hw.py
inbound_services:
- mail
И создал handle_incoming_email.py
import cgi
import os
import logging
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.api import mail
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler
class ReceiveEmail(InboundMailHandler):
def receive(self,message):
logging.info("Received email from %s" % message.sender)
plaintext = message.bodies(content_type='text/plain')
for text in plaintext:
txtmsg = ""
txtmsg = text[1].decode()
logging.info("Body is %s" % txtmsg)
self.response.out.write(txtmsg)
application = webapp.WSGIApplication([
ReceiveEmail.mapping()
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
У меня также есть hw.py
, которые я использовал на практике отправки электронной почты. Это работает.
Теперь я хожу в http://localhost:8081/_ah/admin/inboundmail
и отправить по электронной почте [email protected]
Может кто-нибудь объяснить мне, как я обрабатываю это письмо? Как получить доступ к контенту электронной почты? У меня есть код
self.response.out.write(txtmsg)
в handle_incoming_email.py
но это не печатает ничего.
Буду признателен, если кто-нибудь уточнит, как работает электронная почта.
Например, in this question
class MailHandler (InboundMailHandler):
def receive(self, message):
sender = message.sender
user_account = db.GqlQuery("SELECT * FROM Task WHERE user = :1", sender).fetch(5)
, насколько я понимаю, sender
является электронная почта отправителя. Итак, в моем случае, как мне получить доступ к адресу электронной почты отправителя.
Кроме того, для чего нужен отдельный скрипт для обработки входящей почты? Почему я не могу поместить обработчик ReceiveEmail
в свой сценарий hw.py
? Если я это сделаю, где я поставлю линию
application = webapp.WSGIApplication([
ReceiveEmail.mapping()
], debug=True)
Я был бы признателен, если вы можете помочь мне с этими вопросами.
(I asked the same question в группе GAE, но не было никаких ответов.)
Является ли это logging.info («Получено письмо с% s»% message.sender) строка кода, записывая что-нибудь? – systempuntoout
Да; Я не знал, что logging.info регистрирует информацию в Log Console :) Итак, код работает; теперь мне нужно понять, как написать содержание сообщения электронной почты в хранилище данных. Благодаря! – Zeynel