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

调用Mailgun API发送邮件时HTTP请求无法正常工作

问题根因

代码存在4个直接导致请求失败的问题:

  • 认证逻辑不符合Mailgun API规范:Mailgun不支持在请求头中直接传api字段作为密钥,要求使用HTTP Basic认证,固定用户名为api,密码为账户对应的API密钥。
  • Content-Type配置错误:Mailgun v3发信接口默认接收application/x-www-form-urlencoded格式的请求体,配置的application/json会导致服务端无法解析参数,直接返回400错误。
  • GML语法错误:ds_map_create()后直接跟大括号批量写入键值对是非法语法,GML不支持这种数据结构初始化写法,会直接触发运行时报错。
  • 缺少参数编码与响应处理逻辑:直接将DS Map作为POST请求体传入时,GML不会自动将其编码为接口要求的form格式,同时未编写HTTP异步回调逻辑,无法获取服务端返回的错误信息定位问题。
修正方案
  1. 生成符合要求的Basic认证头:将字符串api:你的API密钥做Base64编码,拼接为Basic 编码结果的格式放入Authorization请求头。
  2. 将Content-Type修改为application/x-www-form-urlencoded。
  3. 按照GML语法正确构建参数,手动将所有参数拼接为urlencoded格式的字符串,每个参数值用url_encode()处理转义。
  4. 添加HTTP异步事件处理逻辑,打印请求返回的状态码、响应内容,方便后续排查问题。
修正后的可运行代码
// 构建请求头
header = ds_map_create();
// 替换为你自己的Mailgun API密钥
var _api_key = "你的实际Mailgun私钥";
var _auth_str = "api:" + _api_key;
var _auth_b64 = base64_encode(_auth_str);
header[? "Authorization"] = "Basic " + _auth_b64;
header[? "Content-Type"] = "application/x-www-form-urlencoded";

// 构建POST请求体(form-urlencoded格式)
var _from = url_encode("mailgun@lapaihui.org");
var _to = url_encode("你的收件人邮箱");
var _subject = url_encode("Dear user");
var _text = url_encode("This is your game talking");
var _post_body = "from=" + _from + "&to=" + _to + "&subject=" + _subject + "&text=" + _text;

// 发送请求,保存请求ID用于异步回调匹配
request_id = http_request("https://api.mailgun.net/v3/lapaihui.org/messages", "POST", header, _post_body);

// 销毁DS Map避免内存泄漏
ds_map_destroy(header);

需要在对应对象的Async - HTTP事件中添加以下代码,获取请求返回结果排查问题:

if (async_load[? "id"] == request_id) {
    if (async_load[? "status"] == 0) {
        show_debug_message("请求失败,请检查本地网络连接");
    } else {
        show_debug_message("响应状态码:" + string(async_load[? "status"]));
        show_debug_message("响应内容:" + async_load[? "result"]);
    }
}

常见状态码对应问题:

  • 401:API密钥错误,或认证头格式不符合要求
  • 400:参数缺失、发件人域名未完成DNS验证、收件人邮箱格式错误;如果使用Mailgun默认沙盒域名,收件人必须提前在Mailgun后台完成授权验证,否则会被拦截
  • 403:账号未激活,或当前使用的API密钥没有对应发信域名的操作权限
  • 404:API请求地址错误,检查域名、路径是否和Mailgun后台显示的配置一致

内容的提问来源于stack exchange,提问作者Hats OFF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:24:26