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

如何在PHP中通过Amazon AWS SES API的sendEmail函数配置List-Unsubscribe头

在PHP中配置AWS SES sendEmail的List-Unsubscribe头

我之前也碰到过类似的问题,其实AWS SES的sendEmail函数是支持添加自定义邮件头的,只是这个配置项容易被忽略。你需要在Message参数里添加Headers数组,专门用来定义这类自定义头信息。

直接给你可行的代码示例吧,你可以对照着修改自己的实现:

// 假设你已经初始化好了AWS SES客户端 $sesClient
$sendEmailParams = [
    'Destination' => [
        'ToAddresses' => ['user@example.com'], // 替换成实际收件人
    ],
    'Message' => [
        'Subject' => [
            'Charset' => 'UTF-8',
            'Data' => '你的邮件主题',
        ],
        'Body' => [
            'Html' => [
                'Charset' => 'UTF-8',
                'Data' => '<p>这里是HTML邮件内容,记得加上退订链接的提示哦</p>',
            ],
            'Text' => [
                'Charset' => 'UTF-8',
                'Data' => '这里是纯文本邮件内容,同样可以加上退订链接',
            ],
        ],
        // 关键部分:添加List-Unsubscribe头
        'Headers' => [
            [
                'Name' => 'List-Unsubscribe',
                // 按照RFC标准格式,支持URL和mailto两种方式,用逗号分隔
                'Value' => '<http://unsubscribe.link>, <mailto:unsubscribe@yourdomain.com?subject=退订请求>'
            ]
        ],
    ],
    'Source' => 'sender@yourdomain.com', // 替换成SES验证过的发件人邮箱
];

// 调用sendEmail发送邮件
try {
    $result = $sesClient->sendEmail($sendEmailParams);
    echo "邮件发送成功,Message ID: " . $result['MessageId'];
} catch (Exception $e) {
    echo "发送失败: " . $e->getMessage();
}

这里有几个需要注意的细节:

  • 一定要遵循RFC 2369的格式要求:每个退订选项用尖括号<>包裹,多个选项之间用逗号加空格分隔
  • 除了URL,你还可以添加mailto地址,这样用户在邮件客户端里直接点击退订按钮就可以发送退订邮件,体验更好
  • 确保你的SES客户端是正确初始化的(比如用AWS SDK for PHP v3,配置好access key、secret key和区域)
  • 发送测试邮件后,可以在邮件客户端里查看原始邮件头,确认List-Unsubscribe是否已经正确添加

如果之前你的代码里没有包含Headers这个配置项,那这就是问题的核心——SES不会自动帮你添加这个头,必须手动定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:50:06