Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Sendgrid添加到邮件列表不起作用_Php_Curl_Sendgrid - Fatal编程技术网

Php Sendgrid添加到邮件列表不起作用

Php Sendgrid添加到邮件列表不起作用,php,curl,sendgrid,Php,Curl,Sendgrid,我使用以下代码将电子邮件添加到sendgrid中的列表中。但它正在返回插入的:0响应 $request_url = "https://sendgrid.com/api/newsletter/lists/email/add.json"; $data = array("email"=>"testemail@test.com"); $params = array( 'api_user' => $sengrid_user, 'api_key' => $sendg

我使用以下代码将电子邮件添加到sendgrid中的列表中。但它正在返回插入的:0响应

$request_url =  "https://sendgrid.com/api/newsletter/lists/email/add.json";
$data = array("email"=>"testemail@test.com");
$params = array(
    'api_user'  => $sengrid_user,
    'api_key'   => $sendgrid_pass,
    'list'=>"TestAlwin",
    'data' =>json_encode($data)
  );

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $request_url);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$resp = curl_exec($ch);
curl_close($ch);
这将返回插入的:0响应。它应该将mailid插入到我指定的列表中

我使用以下内容作为参考:

curl -d 'api_user=your_sendgrid_username&api_key=your_sendgrid_password&list=my_list&data[]={"email":"address1@domain.com","name":"contactName1"}&data[]={"email":"address2@domain.com","name":"contactName2"}' https://sendgrid.com/api/newsletter/lists/email/add.json
这实际上是在他们的api中给出的:

我在这里添加了curl-vebrose:

* About to connect() to sendgrid.com port 80 (#0)
*   Trying 1.1.1.1... * connected
* Connected to sendgrid.com (1.1.1.1) port 80 (#0)
> POST /api/newsletter/lists/email/add.json?list=TestAlwin HTTP/1.1
Host: sendgrid.com
Accept: */*
Content-Length: 395
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------4435bfc2eb00

< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 13 Sep 2013 07:04:42 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< 
* Connection #0 to host sendgrid.com left intact
* Closing connection #0
*即将()连接到sendgrid.com端口80(#0)
*正在尝试1.1.1.1…*有联系的
*已连接到sendgrid.com(1.1.1.1)端口80(#0)
>POST/api/newsletter/lists/email/add.json?list=TestAlwin HTTP/1.1
主持人:sendgrid.com
接受:*/*
内容长度:395
预期:100人继续
内容类型:多部分/表单数据;边界=------------------------------------4435bfc2eb00

这些1.1.1.1只是我在这里添加的测试IP,而不是实际的IP

SendGrid时事通讯API已损坏-特别是一次不能向列表中添加多封电子邮件,使其无法使用。我在一周前报告了它-他们确认了这个bug,没有给出修复的时间表。他们似乎不太关心…

SendGrid新闻稿API至少需要“email”和“name”参数(如文档中所示:)

我更新了您的测试代码,在代码中加入了“name”=>”,它工作得很好(还修复了api_用户的$sendgrid_用户变量中的打字错误)

干杯

--杰森


您是否从API收到任何错误响应?没有。只是{“inserted”:0}当我打印$resp时,这实际上是因为我这边的错误,我还需要传递名称。现在我如何在那里传递多个值呢?如果你指的是多封电子邮件等,只需将它们作为数组添加到数组中即可
$request_url =  "https://sendgrid.com/api/newsletter/lists/email/add.json";
$data = array("email" => "hello@world.com", "name" => '');
$params = array(
    'api_user'  => $sendgrid_user,
    'api_key'   => $sendgrid_pass,
    'list'=>"TestAlwin",
    'data' =>json_encode($data)
  );

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $request_url);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$resp = curl_exec($ch);
curl_close($ch);