联系我们 button/smtplib 转发详情

Contact Us button/smtplib forward details

我正在 python任何地方使用来制作网站。我已经建立了一个联系我们的页面,我正在尝试将用户提交的任何内容作为反馈,然后使用 smtplib 将信息转发给自己。我在他们的论坛上问过这个问题,但他们出于某种原因刚刚删除了我的 post.

这是我的 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)

编辑:如果我手动设置报告并受制于一些杂项文本字符串,它会正常发送。但是试图获取某人提交的信息并没有给出任何结果。

正如上面评论中所讨论的那样——看起来问题是您在 form 标签中缺少 method="POST"。这意味着表单是使用 GET 方法提交的,因此正在执行您视图中 if 语句的第一个分支中的代码,这意味着没有发送电子邮件。