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

SvelteKit集成Mailgun发送邮件出现404错误求助

SvelteKit集成Mailgun发送邮件出现404错误的解决办法

问题分析

从你提供的请求地址https://api.mailgun.net/v3/xxxxx.mailgun.org.com/messages可以看出,核心问题是Mailgun域名格式错误——域名末尾多了.com后缀,导致API请求指向了不存在的资源,触发404错误。

修复步骤

  1. 修正环境变量中的域名
    检查PRIVATE_MAILGUN_DOMAIN的值,确保它是Mailgun控制台中已验证的正确域名,格式应为xxxxx.mailgun.org(沙箱域名或自定义验证域名),删除多余的.com后缀。

  2. 验证域名合法性
    登录Mailgun后台,进入「Domains」页面,复制已完成验证的完整域名(比如沙箱域名为sandboxxxxxxxxxxxxx.mailgun.org),替换到环境变量中。

  3. 额外注意事项

    • 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:40:13