使用自定义SMTP服务器时Supabase Auth出现500错误求助
自定义SMTP下Supabase认证邮件触发500错误排查方案
问题现象
使用自定义SMTP服务器时,Supabase执行重置密码等需触发邮件发送的认证操作,会抛出以下错误:
AuthApiError: Unable to process request at handleError (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/lib/fetch.js:74:11) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async _handleRequest (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/lib/fetch.js:117:9) at async _request (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/lib/fetch.js:99:18) at async SupabaseAuthClient.resetPasswordForEmail (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/GoTrueClient.js:1243:20) at async resetPassword (webpack-internal:///(action-browser)/./app/(auth)/actions.ts:100:23) at async C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:39:418) at async rw (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:38:7978) at async r6 (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:41:1256) at async doRender (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:1438:30) at async cacheEntry.responseCache.get.routeKind (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:1599:28) at async DevServer.renderToResponseWithComponentsImpl (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:1507:28) at async DevServer.renderPageComponent (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:1931:24) at async DevServer.renderToResponseImpl (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:1969:32) at async DevServer.pipeImpl (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:920:25) at async NextNodeServer.handleCatchallRenderRequest (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\next-server.js:272:17) at async DevServer.handleRequestImpl (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\base-server.js:816:17) at async C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\dev\next-dev-server.js:339:20) at async Span.traceAsyncFn (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\trace\trace.js:154:20) at async DevServer.handleRequest (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\dev\next-dev-server.js:336:24) at async invokeRender (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\lib\router-server.js:174:21) at async handleRequest (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\lib\router-server.js:353:24) at async requestHandlerImpl (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\lib\router-server.js:377:13) at async Server.requestListener (C:\Users\admin\Documents\GitHub\better-guessr\node_modules\next\dist\server\lib\start-server.js:141:13) { __isAuthError: true, status: 500, code: 'unexpected_failure' }
切换至Supabase内置邮件服务时,所有认证邮件功能正常。
排查与解决步骤
核对SMTP配置参数
检查Supabase控制台SMTP设置的核心字段:- 主机地址、端口:确认与SMTP服务商提供的信息完全一致(如587对应STARTTLS,465对应SSL)
- 用户名、密码:确保是SMTP服务的有效凭据,部分服务商需使用专用应用密码而非账号登录密码
- 加密方式:匹配服务商要求的SSL/TLS或STARTTLS选项
检查SMTP服务器连接权限
- 确认Supabase服务器IP未被SMTP服务商列入黑名单,部分邮件服务会限制陌生IP的连接请求
- 若使用企业内部SMTP,需排查防火墙是否允许Supabase出站流量访问对应SMTP端口
手动测试SMTP连通性
使用终端命令验证SMTP服务器是否可正常访问:# 测试587端口(STARTTLS) openssl s_client -connect your-smtp-host:587 -starttls smtp # 测试465端口(SSL) openssl s_client -connect your-smtp-host:465若连接失败,直接联系SMTP服务商确认服务可用性或配置规则
查看Supabase Auth日志
进入Supabase控制台「Logs」页面,筛选auth分类日志,查看触发错误时的具体底层报错——unexpected_failure通常对应SMTP调用失败,日志会提供更细节的原因(如认证失败、超时、邮件格式错误)检查自定义邮件模板
确认重置密码等邮件模板无语法错误,比如变量替换是否正确({{ .Token }}、{{ .Email }}),是否包含不符合SMTP规范的特殊字符确认SMTP发送配额
检查SMTP服务商后台的发送频率、数量限额,若超出配额会直接拒绝请求,需调整配额或发送策略
内容的提问来源于stack exchange,提问作者Kyle H
相关产品推荐
相关产品推荐

