Отправка содержимого формы с помощью Python в Google App Engine

Я пытаюсь реализовать кнопку подписки на моем сайте, которая будет отправлять все, что пользователь пишет на один из моих писем.
Я пытаюсь написать сценарий Python, который сделал бы это.
Мой веб-сайт статичен и размещен на App engine.

Моя форма

                <form method="post" action="assets/python/mail.py" class="container 50%">
                <input type="email" name="email" id="email" placeholder="Ton adresse email" /><
                <input type="submit" value="S'inscrire" class="fit special" />  
                </form> 

Мой скрипт python

from google.appengine.api import mail
from google.appengine.api import app_identity
import cgi 


def send_approved_mail(sender_address, mail, type):
    # [START send_mail]
    mail.send_mail(sender=sender_address,
                   to="<x@x.com>",
                   subject=type,
                   body=mail)
    # [END send_mail]
form = cgi.FieldStorage() 
if form.has_key("email"): 
    mail = form["email"].value
    send_approved_mail('{}@appspot.gserviceaccount.com'.format(app_identity.get_application_id()), mail, "client")  

Два вопроса:
— Есть шанс, что это сработает ?

— Как я служу скрипт с App Engine. Что делать с моим приложением.yaml ? Когда я пытаюсь использовать кнопку, она просто открывает скрипт как обычный текст в новом окне

Спасибо!

1 ответ

  1. Добавьте эти строки в приложение.ямл:

    handlers:
    - url: /subscribe/.*
      script: subscribe.app
    
    libraries:
    - name: webapp2
      version: "2.5.2"
    

    Затем переименуйте скрипт Python в subscribe.py и изменить его содержание на это:

    #!/usr/bin/env python
    
    import cgi
    import webapp2
    from google.appengine.api import mail
    from google.appengine.api import app_identity
    
    
    class Form(webapp2.RequestHandler):
      def get(self):
        self.response.out.write('''
    <form method="post" action="/subscribe/send_mail" class="container 50%">
    <input type="text" name="email" id="email" placeholder="Ton adresse email" />
    <input type="submit" value="S'inscrire" class="fit special" />
    </form>
    ''')
    
    class SendMail(webapp2.RequestHandler):
      def post(self):
        email = self.request.get('email')
        sender = '{}@appspot.gserviceaccount.com'.format(app_identity.get_application_id())
        mail.send_mail(sender=sender,
                       to="<x@x.com>",
                       subject='Subscribe',
                       body=email)
        self.response.out.write("Sent mail")
    
    
    app = webapp2.WSGIApplication([
      ('/subscribe/form', Form),
      ('/subscribe/send_mail', SendMail),
    ], debug=True)
    

    Это должно помочь вам начать. Надеюсь, это поможет!