Receiving Mail ile ilgili eğiticiyi okuyorum. Ben de e-posta göndererek uygulamak için kullanılan hw.py
sahipGoogle App Engine'de Posta Alma
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
Ve 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()
yarattı: emrettiğim gibi app.yaml dosyası güncellendi. Bu çalışır.
Şimdi http://localhost:8081/_ah/admin/inboundmail
gidip bir e-posta göndermek [email protected]
Bu e-postayı işlemek nasıl biri bana açıklayabilir mi? E-postanın içeriğine nasıl erişebilirim? Ben kodu handle_incoming_email.py
içinde
self.response.out.write(txtmsg)
var ama o şey yazmaz.
E-posta alma işleminin nasıl çalıştığını açıklığa kavuşturabilirseniz çok memnun olurum. Örneğin
class MailHandler (InboundMailHandler):
def receive(self, message):
sender = message.sender
user_account = db.GqlQuery("SELECT * FROM Task WHERE user = :1", sender).fetch(5)
bildiğim kadarıyla sender
anladığım kadarıyla gönderenin e-posta olduğunu. Yani, benim durumumda gönderenin e-posta adresine nasıl erişirim.
Ayrıca, gelen postaları işlemek için neden ayrı bir betiğe sahip olmam gerekiyor? Neden ReceiveEmail
işleyiciyi hw.py
komut dosyasına koyamıyorum? Ben çizgi
application = webapp.WSGIApplication([
ReceiveEmail.mapping()
], debug=True)
koymak yerlerde, bu yaparsanız bu sorularla bana yardımcı olabilir eğer minnettar olacaktır.
(GAE'nin grubunda I asked the same question ama hiçbir cevap yoktu.)
Bu logging.info ("% s den alınan e-posta alındı"% message.sender) kod satırı, bir şeyleri günlüğe kaydettiriyor mu? – systempuntoout
Evet; Logging.info'nun bilgiyi Log Console'a kaydettiğini bilmiyordum :) Bu yüzden kod çalışıyor gibi görünüyor; şimdi e-postanın içeriğini nasıl veri deposuna yazacağımı bulmalıyım. Teşekkürler! – Zeynel