我想在sendgrid请求中添加“header”,用于设置“Message-ID”参数,我在PHP中使用CURL请求

yvgpqqbh  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(88)

我把身体做成这样:

$params = [
  "personalizations" => [
    [
      "to" => [
        ["email" => "[email protected]"]
      ],
      "subject" => "testing subject for mail"
    ]
  ],
  "from" => [
    "email" => "[email protected]",
    "name" => $from_name
  ],
  "content" => [
    [
      "type" => "text/html",
      "value" => $message
    ]
  ],
  "headers" => [
    "Message-ID" => "<253618-testing-header>"
  ]
];

然后像这样发送:

$request =  $url . 'api/mail.send.json';
$cr = curl_init($request);
curl_setopt($cr, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($cr, CURLOPT_POST, true);
curl_setopt($cr, CURLOPT_HTTPHEADER, array("Authorization: Bearer test"));
curl_setopt($cr, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($cr);
$out = json_decode($response, true);

但它显示空从电子邮件地址(必需的)。
通常我们是这样使用params的:

$params = array(
'to'        => $to,
'subject'   => $subject,
'html'      => $message,
'from'      => $from,
'fromname'  => $from_name,
);

但现在我想设置消息ID头,所以有人建议前面提到的方式。
有人能帮帮忙吗?

0qx6xfy6

0qx6xfy61#

看起来您使用的是SendGrid API的第2版,但是您尝试使用的新示例代码和数据结构是第3版的。
相反,您应该查看V2文档,了解在该版本中如何将头添加到消息中。
像这样设置你的headers参数:

$params = array(
'to'        => $to,
'subject'   => $subject,
'html'      => $message,
'from'      => $from,
'fromname'  => $from_name,
'headers'   => [
    "Message-ID" => "<253618-testing-header>"
  ]
);

应该能解决你的问题
始终验证您所给出的示例是否相关,并根据您所使用的API版本的正确文档仔细检查它们。不要只是盲目地模仿他们,并希望最好的-这往往会导致那种沮丧,促使你问这个问题。
参考文件:

相关问题