我正在尝试将电子邮件地址添加到SendGrid列表,这是我帐户中唯一存在的列表。我可以成功检索列表并发送电子邮件,但我无法将电子邮件添加到联系人列表中。
这是我的方法(按照Email API Reference上的示例并对Authentication API Reference进行身份验证):
<?php
$API_KEY = getenv('SENDGRID_API_KEY'); // Environment variable sourced correctly
$request_url = "https://api.sendgrid.com/api/newsletter/lists/email/add.json";
$headers = array(
"Authorization: Bearer $API_KEY",
"ContentType: application/json"
);
$data = array(
"email" => "email@example.com",
"name" => 'Stackoverflow'
);
$params = array(
'api_user' => $sendgrid_user,
'api_key' => $sendgrid_pass,
'list' => "TestList",
'data' => json_encode($data)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$resp = curl_exec($ch);
curl_close($ch);
print_r($resp);
以下代码的输出为:
{
"error": "TestList does not exist"
}
我知道 TestList 存在,因为我也尝试了List all lists [GET],这显示了我:
{
"lists": [
{
"id": XXXXXX,
"name": "TestList",
"recipient_count": 1
}
]
}
我做错了什么?我缺少什么?
答案 0 :(得分:1)
您正在混合使用两种不同版本的API。您正在通过v3验证和获取列表,但尝试添加到v2。
在v3中,收件人与列表存在一对多的关系,因此您需要create the recipient,然后add it to your list