Estoy leyendo el tutorial sobre Receiving Mail. Yo actualizado el archivo app.yaml como se indica:Recibiendo correo en 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
y creó 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()
También tengo hw.py
que solía practicar el envío de correo electrónico. Ese funciona
Ahora voy a http://localhost:8081/_ah/admin/inboundmail
y enviar un correo electrónico a [email protected]
Puede alguien explicarme cómo procesar este correo electrónico? ¿Cómo accedo al contenido del correo electrónico? Tengo el código
self.response.out.write(txtmsg)
en handle_incoming_email.py
pero eso no imprime nada.
Agradecería mucho si alguien aclara cómo funciona el correo electrónico.
Por ejemplo, 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)
por lo que yo entiendo sender
es el correo electrónico del remitente. Entonces, en mi caso, ¿cómo accedo a la dirección de correo electrónico del remitente?
Además, ¿por qué necesito tener un script separado para manejar el correo entrante? ¿Por qué no puedo poner el controlador ReceiveEmail
en mi script hw.py
? Si hago eso, ¿dónde coloco la línea
application = webapp.WSGIApplication([
ReceiveEmail.mapping()
], debug=True)
Le agradecería que me ayudara con estas preguntas.
(I asked the same question en el grupo GAE pero no hubo respuestas.)
¿Es este logging.info (línea de código "Correo electrónico recibido de% s" message.sender), registrando algo? – systempuntoout
Sí; No sabía que logging.info estaba registrando la información en Log Console :) Por lo tanto, el código parece estar funcionando; ahora necesito averiguar cómo escribir el contenido del correo electrónico en el almacén de datos. ¡Gracias! – Zeynel