Кнопка "Связаться с нами" / подробности пересылки smtplib (решено) - PullRequest
0 голосов
/ 04 августа 2020

Я использую pythonanywhere для создания веб-сайта. Я создал страницу «Связаться с нами» и пытаюсь принять все, что отправляет пользователь, как обратную связь, а затем переслать эту информацию себе с помощью smtplib. Я спрашивал об этом на их форумах, но они почему-то просто удалили мой пост.

Вот мой HTML код:

<title>Contact us!</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/contact.css') }}">
<div class="container">
  <form action="contact">


    <label for="report">Reason</label>
    <select id="report" name="report">
      <option value="Bug">Bug</option>
      <option value="Suggestion">Suggestion</option>
      <option value="Other">Other</option>
    </select>

    <label for="Subject">Subject</label>
    <textarea id="Subject" name="Subject" placeholder="Write something.." style="height:200px"></textarea>

    <input type="submit" value="Submit">

  </form>
</div>

А вот код python:

@app.route("/contact", methods=["GET", "POST"])

def feedback():

    if request.method == 'GET':
        return render_template("contact.html")
    else:
        result = "Thanks for the feedback!"
        report = request.form['report']
        Subject = request.form['Subject']

        from email.mime.text import MIMEText
        import smtplib
        gmail_user = 'email@gmail.com'
        gmail_password = 'password'

        message = MIMEText(report)
        message["Subject"] = Subject
        message["From"] = gmail_user
        message["To"] = gmail_user

        server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
        server.ehlo()
        server.login(gmail_user, gmail_password)
        server.sendmail(gmail_user, gmail_user, message.as_string())
        server.close()
        return render_template('settlement_return.html',result = result)

РЕДАКТИРОВАТЬ: Если я вручную установил отчет и при условии некоторой неправильной c текстовой строки, он отправит нормально. Но попытка получить информацию, которую кто-то представляет, не дает никаких результатов.

1 Ответ

0 голосов
/ 05 августа 2020

Как обсуждалось в комментариях выше - похоже, проблема заключалась в том, что вам не хватало method="POST" в вашем теге form. Это означало, что форма отправлялась с помощью метода GET, поэтому код в первой ветви оператора if в вашем представлении выполнялся, а это означало, что электронное письмо не отправлялось.

...