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

本地正常但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
    }
}

排查与解决建议

  1. 验证Vercel环境变量配置

    • 确认RESEND_KEY和SMTP_FROM_EMAIL在Vercel控制台的环境变量中已正确配置,无拼写或大小写错误
    • 可以在函数开头新增日志:console.log('RESEND_KEY loaded:', !!process.env.RESEND_KEY),验证变量是否正常读取
  2. 检查函数超时限制

    • Vercel Serverless Functions的超时上限为10秒(Edge Functions为25秒),如果邮件请求耗时超过该阈值,会被强制终止,无法输出后续日志
    • 可在Vercel控制台查看函数执行时长,确认是否触发超时;也可给Resend请求手动添加超时配置
  3. 排查网络与请求异常

    • 在代码中强化错误捕获逻辑,比如给resend.emails.send()添加.catch()链式调用,确保所有Promise拒绝情况都被记录
    • 临时替换Resend请求为简单的外部API调用(如https://httpbin.org/get),验证函数是否能正常发起外部请求
  4. 排查Resend服务端问题

    • 确认Resend服务状态正常,可尝试更换测试API密钥或发送邮箱,排除账号/邮箱配置问题
  5. 关于Pro版的作用

    • Vercel免费版与Pro版在邮件发送权限上无明确差异,升级正式Pro版大概率无法解决当前问题,建议优先完成上述排查

内容的提问来源于stack exchange,提问作者Ole A Jørgensen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:26:11