Добавление Sendgrid в список рассылки не работает

Я использую следующий код для добавления писем в список в sendgrid. Но он возвращает вставленный: 0 ответ

$request_url =  "https://sendgrid.com/api/newsletter/lists/email/add.json";
$data = array("email"=>"[email protected]");
$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":"[email protected]","name":"contactName1"}&data[]={"email":"[email protected]","name":"contactName2"}' https://sendgrid.com/api/newsletter/lists/email/add.json

На самом деле это указано в их API здесь:

http://sendgrid.com/docs/API_Reference/Marketing_Emails_API/emails.html

и я добавляю здесь 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

Эти 1.1.1.1 — это просто тестовые IP-адреса, которые я добавил здесь вместо фактического.


person Happy Coder    schedule 13.09.2013    source источник
comment
Получаете ли вы какой-либо ответ об ошибке от API?   -  person Shaun Hare    schedule 13.09.2013
comment
Нет. просто {вставлено: 0}, когда я печатаю $resp   -  person Happy Coder    schedule 13.09.2013
comment
На самом деле это из-за ошибки с моей стороны, мне также нужно передать имя. Теперь, как я могу передать туда несколько значений?   -  person Happy Coder    schedule 13.09.2013
comment
Просто добавьте их как массив в свой массив, если вы имеете в виду несколько электронных писем и т. д.   -  person Shaun Hare    schedule 13.09.2013


Ответы (2)


API новостной рассылки SendGrid не работает — в частности, вы не можете добавить в список более одного электронного письма за раз, что делает его непригодным для использования. Я сообщил об этом неделю назад - они подтвердили ошибку, не назвали сроков исправления. Они не кажутся слишком обеспокоенными...

person Yarin    schedule 15.02.2014

API новостной рассылки SendGrid требует как минимум параметров «email» и «name» (как показано в документах: http://sendgrid.com/docs/API_Reference/Marketing_Emails_API/emails.html)

Я обновил ваш тестовый код, включив в него «name» => '', и он прекрасно работает (также исправлена ​​опечатка в переменной $sendgrid_user в api_user).

Ваше здоровье!

--Джейсон

$request_url =  "https://sendgrid.com/api/newsletter/lists/email/add.json";
$data = array("email" => "[email protected]", "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);
person Jayson Sperling    schedule 20.02.2014