Strapi中使用Nodemailer发送邮件时POST请求报错Method Not Allowed
排查Strapi POST /emails "Method Not Allowed" 问题
下面是几个直接的排查方向:
确认路由文件路径与格式
检查api/email/config/routes.json的路径是否完全正确:- 确保
email文件夹名称拼写无误(不是emails或其他变体) - 验证JSON格式是否合法,比如有没有遗漏逗号、括号不匹配的情况
- 确保
查看Strapi启动日志
启动Strapi时,控制台会输出所有加载的路由信息。搜索日志里是否存在POST /emails这条记录,如果没有,说明路由未被正确加载,重点检查路由文件的语法或路径问题。排查路由冲突
如果之前创建过名为Email的Content-Type,Strapi会自动生成CRUD路由(包括POST /emails),这会和你的自定义路由产生冲突。解决方式:- 删除自动生成的Content-Type路由(在
api/email/config/routes.json的自动生成段) - 修改自定义路由的路径(比如改为
/send-email)
- 删除自动生成的Content-Type路由(在
验证控制器映射
确认控制器的引用是否正确:- 控制器文件
api/email/controllers/Email.js的文件名无误,Strapi会以文件名作为控制器标识(handler: "Email.send"的写法是正确的,也可以尝试改为小写email.send测试) - 确保
send方法已正确导出,没有语法错误
- 控制器文件
检查请求头配置
在Postman中,确保请求头Content-Type设置为application/json,虽然这一般不会直接引发Method Not Allowed,但错误的Content-Type可能导致其他解析问题,建议顺带确认。重启Strapi服务
修改路由或控制器文件后,必须重启Strapi才能让配置生效,确认你已经完成重启操作。
内容的提问来源于stack exchange,提问作者Debuggingnightmare
相关产品推荐
相关产品推荐

