Resend API本地运行正常,部署到Netlify后出现500错误
Astro + Resend API 部署到Netlify后出现500错误
我在Astro项目中使用Resend API,通过json.ts文件的POST接口将表单内容发送至私人域名邮箱。该功能在本地环境完全正常,但部署到Netlify后触发500错误。我通过import.meta.env.API_RESEND从本地.env文件获取API密钥,怀疑部署后密钥的获取方式存在问题。
以下是我的json.ts代码:
import type { APIRoute } from 'astro' import { Resend } from 'resend' const resend = new Resend(import.meta.env.API_RESEND) export const POST: APIRoute = async ({ request }) => { const body = await request.json() const { to, from, html, subject } = body if (!to || !from || !html || !subject) { return new Response(null, { status: 404, statusText: 'Did not provided the right data' }) } try { const send = await resend.emails.send({ from, to, subject, html }) return new Response( JSON.stringify({ message: send.data }), { status: 200, statusText: 'Email sent successfully' } ) } catch (err) { console.log(err.message) return new Response( JSON.stringify({ message: err.message }), { status: 500, statusText: 'Internal server error' } ) } }
排查与解决步骤
配置Netlify环境变量
Netlify不会自动读取本地.env文件,需手动在后台配置:- 登录Netlify控制台,进入目标项目的「Site settings」→「Environment variables」
- 添加键为
API_RESEND、值为你的Resend API密钥的变量 - 确保变量名称与代码中
import.meta.env.API_RESEND完全一致(大小写敏感)
验证环境变量可用性
可在API路由中临时添加日志,部署后通过Netlify函数日志查看:console.log('API密钥是否存在:', !!import.meta.env.API_RESEND)若输出
false,说明环境变量配置有误。检查Resend域名验证状态
本地能发送不代表生产环境可行,需确认私人域名已在Resend后台完成DKIM、SPF等验证步骤,确保发件邮箱域名已通过审核。确认Netlify网络权限
检查Netlify服务器函数是否能访问Resend API地址(https://api.resend.com),若项目有防火墙配置,需放行该域名。
内容的提问来源于stack exchange,提问作者Tomas Mendez
相关产品推荐
相关产品推荐

