我把身体做成这样:
$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头,所以有人建议前面提到的方式。
有人能帮帮忙吗?
1条答案
按热度按时间0qx6xfy61#
看起来您使用的是SendGrid API的第2版,但是您尝试使用的新示例代码和数据结构是第3版的。
相反,您应该查看V2文档,了解在该版本中如何将头添加到消息中。
像这样设置你的headers参数:
应该能解决你的问题
始终验证您所给出的示例是否相关,并根据您所使用的API版本的正确文档仔细检查它们。不要只是盲目地模仿他们,并希望最好的-这往往会导致那种沮丧,促使你问这个问题。
参考文件: