SvelteKit集成Mailgun发送邮件出现404错误求助
SvelteKit集成Mailgun发送邮件出现404错误的解决办法
问题分析
从你提供的请求地址https://api.mailgun.net/v3/xxxxx.mailgun.org.com/messages可以看出,核心问题是Mailgun域名格式错误——域名末尾多了.com后缀,导致API请求指向了不存在的资源,触发404错误。
修复步骤
修正环境变量中的域名
检查PRIVATE_MAILGUN_DOMAIN的值,确保它是Mailgun控制台中已验证的正确域名,格式应为xxxxx.mailgun.org(沙箱域名或自定义验证域名),删除多余的.com后缀。验证域名合法性
登录Mailgun后台,进入「Domains」页面,复制已完成验证的完整域名(比如沙箱域名为sandboxxxxxxxxxxxxx.mailgun.org),替换到环境变量中。额外注意事项
from地址必须使用Mailgun已验证域名下的邮箱,比如noreply@xxxxx.mailgun.org,不能直接用未验证的gmail邮箱(沙箱环境可使用测试收件人,但生产环境必须用验证域名下的发件地址)。- 确认
PRIVATE_MAILGUN_API_KEY是Mailgun提供的有效密钥,避免因权限问题引发其他错误。
修正后的代码示例
import formData from 'form-data'; import Mailgun from 'mailgun.js'; import { PRIVATE_MAILGUN_API_KEY, PRIVATE_MAILGUN_DOMAIN } from '$env/static/private'; const mailgun = new Mailgun(formData); const client = mailgun.client({ username: 'api', key: PRIVATE_MAILGUN_API_KEY }); export const actions = { sendEmail: async (event) => { const { request } = event; const formData = await request.formData(); const messageData = { // 使用已验证的Mailgun域名下的发件邮箱 from: 'noreply@xxxxx.mailgun.org', to: 'xyz@gmail.com', subject: 'Hello from Mailgun', text: 'This is an example email sent with Mailgun.', html: '<strong>This is an example email sent with Mailgun.</strong>' }; try { const response = await client.messages.create(PRIVATE_MAILGUN_DOMAIN, messageData); console.log(response); return { status: 201, message: 'Email sent' }; } catch (error) { console.error(error); return { status: 500, message: 'Failed to send email' }; } } };
内容的提问来源于stack exchange,提问作者Ish Rak
相关产品推荐
相关产品推荐

