Sto leggendo il tutorial su Receiving Mail. Ho aggiornato il file app.yaml come indicato:Ricezione della posta in 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
E ha creato un 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()
Ho anche hw.py
che ho usato per praticare l'invio di e-mail. Quello funziona.
ora vado a http://localhost:8081/_ah/admin/inboundmail
e inviare una mail a [email protected]
Qualcuno può spiegare a me come io elaboro questa email? Come posso accedere al contenuto dell'e-mail? Ho il codice
self.response.out.write(txtmsg)
in handle_incoming_email.py
ma che non stampa nulla.
Apprezzerei molto se qualcuno chiarisse come funziona la ricezione della posta elettronica.
Per esempio, 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)
per quanto ho capito sender
è l'e-mail del mittente. Quindi, nel mio caso, come posso accedere all'indirizzo email del mittente.
Inoltre, perché è necessario disporre di uno script separato per gestire la posta in arrivo? Perché non riesco a inserire il gestore ReceiveEmail
nello script hw.py
? Se lo faccio, dove metto la linea
application = webapp.WSGIApplication([
ReceiveEmail.mapping()
], debug=True)
Sarei grato se mi può aiutare con queste domande.
(I asked the same question nel gruppo GAE, ma non c'erano risposte.)
È questa linea di codice logging.info ("E-mail ricevuta da% s"% message.sender), registrazione di qualcosa? – systempuntoout
Sì; Non sapevo che logging.info stava registrando le informazioni nella Log Console :) Quindi, il codice sembra funzionare; ora ho bisogno di capire come scrivere il contenuto dell'email su datastore. Grazie! – Zeynel