You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask+HTML实现网站发邮件遇Method Not Allowed错误求助

解决Flask中"Method Not Allowed"错误及邮件发送问题

你遇到的"Method Not Allowed"错误主要有两个核心原因,同时邮件发送逻辑也存在未执行的问题,下面逐一解决:

1. 缺少/order的GET路由

你的Flask代码仅给/order配置了POST请求方法,但当你访问/order页面(比如在浏览器输入该地址)时,浏览器发送的是GET请求,这直接导致了方法不允许的错误。另外如果直接本地打开order.html文件提交表单,请求地址的上下文也会和Flask服务不匹配。

解决方法:给/order路由同时添加GET和POST方法,在GET请求时渲染表单页面,POST请求时处理邮件发送:

@app.route('/order', methods=['GET', 'POST'])
def process_order():
    # 邮件发送逻辑放在这里
    if request.method == 'POST':
        # 执行发送邮件
        send_email()
        return "请求已成功发送,我们会尽快回复你!"
    # GET请求时返回表单页面
    return render_template('order.html')

2. 未调用send_email函数

你在process_order里定义了send_email函数,但没有实际调用它,所以就算表单提交成功,邮件也不会发送。需要在POST分支里主动调用send_email()。

3. Gmail SMTP认证补充(额外提示)

现在Gmail已不支持直接用账号密码登录SMTP服务,你需要:

  • 给谷歌账号开启两步验证
  • 生成应用专用密码,替换代码里的***密码

修正后的完整代码

from flask import Flask, render_template, request
import smtplib


app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/about')
def about():
    return render_template('about.html')

@app.route('/order', methods=['GET', 'POST'])
def process_order():
    def send_email():
        email = request.form['email']
        message = request.form['message']

        # 构造标准邮件格式,避免被当成垃圾邮件
        full_message = f"From: {email}\nSubject: 网站用户留言\n\n{message}"
        
        # 发送邮件
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        # 替换为你的邮箱和应用专用密码
        server.login("rprp9**@gmail.com", "你的应用专用密码")
        # 第二个参数填你自己的收件邮箱(比如你的Gmail地址)
        server.sendmail("rprp9**7@gmail.com", "rprp9**7@gmail.com", full_message.encode('utf-8'))
        server.quit()

    if request.method == 'POST':
        send_email()
        return "请求已成功发送,我们会尽快回复你!"
    return render_template('order.html')

if __name__ == '__main__':
    app.run(debug=True)

额外注意点

  • 确保order.html放在Flask项目的templates文件夹下(Flask默认从这个目录读取模板)
  • 邮件内容添加From和Subject头,能提升邮件的正常显示概率,避免被邮箱服务商判定为垃圾邮件

内容的提问来源于stack exchange,提问作者N1PEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:02:42