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

PHP中如何从SendGrid响应头提取X-Message-Id?求示例代码

从SendGrid响应头提取X-Message-Id的PHP实现

你的SendGrid响应头是以数组形式返回的,每个元素是"键: 值"格式的字符串。可以通过遍历数组、拆分键值对的方式提取X-Message-Id,示例代码如下:

try {
    $Response = $sendgrid->send($SgEmail);
    $headers = $Response->headers();
    $messageId = null;

    foreach ($headers as $header) {
        // 跳过空的头信息行
        if (empty(trim($header))) continue;
        
        // 按冒号分割键和值,仅分割一次避免值中包含冒号导致错误
        $parts = explode(':', $header, 2);
        if (count($parts) !== 2) continue;
        
        $key = trim($parts[0]);
        $value = trim($parts[1]);
        
        // 匹配目标头字段
        if ($key === 'X-Message-Id') {
            $messageId = $value;
            break; // 找到后立即终止循环,提升效率
        }
    }

    if ($messageId) {
        echo "提取到的X-Message-Id: " . $messageId;
    } else {
        echo "未在响应头中找到X-Message-Id";
    }
} catch (Exception $e) {
    // 捕获并处理发送邮件时的异常
    echo "邮件发送失败: " . $e->getMessage();
}

关键说明:

  • 使用explode(':', $header, 2)限制分割次数,防止值中包含冒号(比如部分URL)导致拆分错误
  • 跳过空的头信息行,避免无效处理
  • 找到目标字段后立即跳出循环,减少不必要的遍历
  • 补充异常捕获逻辑,完善错误处理

你的原始响应内容翻译后:

Array ( 
    [0] => HTTP/1.1 202 已接受 
    [1] => Server: nginx 
    [2] => Date: 2023年12月22日 星期五 15:00:54 GMT 
    [3] => Content-Length: 0 
    [4] => Connection: keep-alive 
    [5] => X-Message-Id: BjsVqpBVTq63Z2fuITBUKw 
    [6] => Access-Control-Allow-Origin: https://sendgrid.api-docs.io 
    [7] => Access-Control-Allow-Methods: POST 
    [8] => Access-Control-Allow-Headers: Authorization, Content-Type, On-behalf-of, x-sg-elas-acl 
    [9] => Access-Control-Max-Age: 600 
    [10] => X-No-CORS-Reason: https://sendgrid.com/docs/Classroom/Basics/API/cors.html 
    [11] => Strict-Transport-Security: max-age=600; includeSubDomains 
    [12] => 
    [13] => ) ('to','To_Name','Email@address.com')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:55:06