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

如何通过API为Mailgun邮件添加自定义头?Deno服务器头丢失求助

解决Deno中Mailgun自定义请求头不生效的问题

以下是针对问题的排查和解决方案:

  • 调整自定义头的传递格式
    多数Deno环境下的Mailgun SDK不支持直接用h:前缀作为键名传递自定义头,需将所有自定义头放在headers对象中。修改代码如下:

    await mailgun.send({
            to: mailgunData.email,
            from: mailgunData.from,
            subject: mailgunData.subject,
            template: ReminderEmailTemplate.Projects,
            "v:projectsLink": `${getBaseUrl()}/projects`,
            "v:projectStartLink": `${getBaseUrl()}/project-start`,
            "v:jobsLink": `${getBaseUrl()}/jobs`,
            "v:fullName": mailgunData.full_name,
            headers: {
                "List-Unsubscribe": "<http://lists.domain.tld/newsletter>, <mailto:newsletter-request@domain.tld?subject=unsubscribe>",
                "List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
                "Precedence": "bulk",
                "Priority": "normal",
                "X-Mailgun-Tag": "newsletter",
                "Feedback-ID": "1234:newsletter:mailgun",
                "X-Mailgun-Dkim": "yes",
                "something": "something",
                "Reply-To": "something@something.com"
            }
    })
    
  • 验证SDK版本与文档匹配
    确认你使用的Mailgun Deno库为最新版本,查看其官方文档中关于自定义头传递的具体要求。部分旧版本SDK可能对参数格式有特殊限制。

  • 直接调用Mailgun API测试
    如果SDK仍有问题,尝试绕过SDK直接用fetch调用Mailgun发送API,验证自定义头是否能正常传递:

    const apiKey = "你的Mailgun API密钥";
    const domain = "你的域名";
    
    await fetch(`https://api.mailgun.net/v3/${domain}/messages`, {
        method: "POST",
        headers: {
            "Authorization": `Basic ${btoa(`api:${apiKey}`)}`,
            "Content-Type": "application/x-www-form-urlencoded"
        },
        body: new URLSearchParams({
            to: mailgunData.email,
            from: mailgunData.from,
            subject: mailgunData.subject,
            template: ReminderEmailTemplate.Projects,
            "v:projectsLink": `${getBaseUrl()}/projects`,
            "v:projectStartLink": `${getBaseUrl()}/project-start`,
            "v:jobsLink": `${getBaseUrl()}/jobs`,
            "v:fullName": mailgunData.full_name,
            "h:List-Unsubscribe": "<http://lists.domain.tld/newsletter>, <mailto:newsletter-request@domain.tld?subject=unsubscribe>",
            "h:List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
            "h:Precedence": "bulk",
            // 其他自定义头...
        })
    });
    

    若此方法生效,说明问题出在SDK的参数解析上,可考虑升级SDK或提交issue反馈。

  • 检查Mailgun日志详情
    确认你查看的是Mailgun控制台中邮件的完整头信息,而非摘要视图。部分默认日志视图会隐藏部分自定义头,需进入单条邮件的详情页面查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:34:55