本地正常但Vercel部署后无法发送邮件问题咨询
Vercel部署后邮件发送无响应问题
问题描述
- 本地环境使用Resend发送邮件完全正常:能正常记录响应码,邮件发送成功
- 部署到Vercel后,日志仅输出邮件主题,后续无任何响应(既不输出成功响应,也不抛出错误)
- 更换为Nodemailer后,出现完全相同的问题
- 最初怀疑是Vercel免费账户的限制,升级到Pro试用版后问题依旧,不确定升级正式Pro版是否能解决问题
相关代码
export const sendEmail = async (to: string, subject: string, html: string) => { try { console.log('sendEmail - resend') console.log('to', to) console.log('subject', subject) const resend = new Resend(process.env.RESEND_KEY) const response: CreateEmailResponse = await resend.emails.send({ from: process.env.SMTP_FROM_EMAIL!, to: to, subject: subject, html: html }) console.log('CreateEmailResponse', response) return response } catch (error) { console.log('send mail error', error) throw error } }
排查与解决建议
验证Vercel环境变量配置
- 确认
RESEND_KEY和SMTP_FROM_EMAIL在Vercel控制台的环境变量中已正确配置,无拼写或大小写错误 - 可以在函数开头新增日志:
console.log('RESEND_KEY loaded:', !!process.env.RESEND_KEY),验证变量是否正常读取
- 确认
检查函数超时限制
- Vercel Serverless Functions的超时上限为10秒(Edge Functions为25秒),如果邮件请求耗时超过该阈值,会被强制终止,无法输出后续日志
- 可在Vercel控制台查看函数执行时长,确认是否触发超时;也可给Resend请求手动添加超时配置
排查网络与请求异常
- 在代码中强化错误捕获逻辑,比如给
resend.emails.send()添加.catch()链式调用,确保所有Promise拒绝情况都被记录 - 临时替换Resend请求为简单的外部API调用(如
https://httpbin.org/get),验证函数是否能正常发起外部请求
- 在代码中强化错误捕获逻辑,比如给
排查Resend服务端问题
- 确认Resend服务状态正常,可尝试更换测试API密钥或发送邮箱,排除账号/邮箱配置问题
关于Pro版的作用
- Vercel免费版与Pro版在邮件发送权限上无明确差异,升级正式Pro版大概率无法解决当前问题,建议优先完成上述排查
内容的提问来源于stack exchange,提问作者Ole A Jørgensen
相关产品推荐
相关产品推荐

