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

使用Nodemailer和本地服务器时遭遇Error 405请求方法不允许问题

解决POST请求405 Method Not Allowed错误

核心问题:Next.js API路由写法不匹配

你的api/sendEmail/route.js用的是Pages Router的API路由写法(默认导出handler函数并判断req.method),但如果你的项目是Next.js 13+的App Router架构,这种写法不会被识别,导致服务器无法处理POST请求,返回405错误。

修复步骤

1. 修正API路由文件(App Router写法)

把api/sendEmail/route.js改成App Router要求的格式,单独导出POST函数:

import nodemailer from 'nodemailer';

export async function POST(req) {
  // 敏感环境变量不要加NEXT_PUBLIC_前缀,避免暴露给客户端
  const username = process.env.BURNER_USERNAME;
  const password = process.env.BURNER_PASSWORD;
  const myEmail = process.env.PERSONAL_EMAIL;

  // 解析请求体(App Router的req需要await读取)
  const { name, email, message } = await req.json();

  // 创建Nodemailer transporter(不需要第一个"SMTP"参数)
  const transporter = nodemailer.createTransport({
    host: "sandbox.smtp.mailtrap.io",
    port: 2525,
    auth: {
      user: username,
      pass: password,
    },
  });

  try {
    // 补充完整邮件发送逻辑
    await transporter.sendMail({
      from: email,
      to: myEmail,
      subject: `新订单:${name}`,
      text: message,
    });
    return new Response(JSON.stringify({ success: true }), { status: 200 });
  } catch (err) {
    return new Response(JSON.stringify({ success: false, error: err.message }), { status: 500 });
  }
}

2. 完善前端请求的Headers

在OrderForm.js的fetch请求中添加Content-Type头,确保服务器能正确解析JSON格式的请求体:

const res = await fetch("/api/sendEmail", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(order),
});

if (res.ok) {
  router.refresh();
  router.push("/custom-order/order-submitted");
} else {
  const errData = await res.json();
  console.error("提交失败:", errData.error || res.statusText);
}

3. 修正环境变量(重要)

你当前的邮箱密码等敏感信息用了NEXT_PUBLIC_前缀,会被打包到客户端代码中,存在安全风险。去掉前缀,只保留BURNER_USERNAME、BURNER_PASSWORD、PERSONAL_EMAIL,这些变量只会在服务器端生效。

额外检查点

  • 确认你的项目架构:如果是Pages Router,API文件应该放在pages/api/sendEmail.js,而不是app/api/sendEmail/route.js;如果是App Router,确保app目录存在且路由文件路径正确。
  • 重启开发服务器,确保环境变量和代码修改生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:30:20