2016-07-07 4 views
0

Пытается обновить пакет писем. Я думаю, что я пытался каждый способ сделать это, но мое использование DrewM's MailChimp wrapper только возвращает следующий $result содержания:MailChimp API 3.0 Пакетное обновление - всегда в ожидании, total_operations: 0

Array ([id] => 1234abcd [status] => pending [total_operations] => 0 [finished_operations] => 0 

И так далее. Нет ошибок, но никаких операций!

По существу, мой код выглядит так, где $emails хранит все электронные письма в массиве.

include("MailChimp.php"); 
include("Batch.php"); 

$list_id = "1234abcd"; 

use \DrewM\MailChimp\MailChimp; 
use \DrewM\MailChimp\Batch; 
$apiKey = 'aslkjf84983hg84938h89gd-us13'; 

if(!isset($emails)){ // If not sending bulk requests 
    $MailChimp = new MailChimp($apiKey); 
    $subscriber_hash = $MailChimp->subscriberHash($email); 
    $result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", 
     array(
      'status' => 'subscribed', 
     ) 
    ); 

/* SENDING BATCH OF EMAILS */ 
} else if($emails){ 
    $MailChimp = new MailChimp($apiKey); 
    $Batch  = $MailChimp->new_batch(); 
    $i = 1; 
    foreach($emails as &$value){ 
     $Batch->post("op".$i, "lists/$list_id/members", [ 
      'email_address' => $value, 
      'status'  => 'subscribed', 
     ]); 
     $i++; 
    } 
    $result = $Batch->execute(); // Send the request (not working I guess) 
    $MailChimp->new_batch($batch_id); // Now get results 
    $result = $Batch->check_status(); 
    print_r($result); 
} 

Если кто-нибудь может видеть то, что я не вижу, я буду очень признателен!

ответ

1

Проблема решена. После разговора с представителем MailChimp он помог найти две серьезные проблемы.

Вместо использования метода POST он сказал использовать PUT при работе с уже существующими электронными письмами. POST лучше всего использовать для добавления писем, в то время как PUT может добавлять и обновлять электронные письма.

Таким образом, измените

$Batch->post 

в

$Batch->put 

Во-вторых, после того, как успешно посылать запросы и получать ошибки в $result, он обнаружил, что они были 405 ошибки и сказал мне, чтобы добавить md5 хэш мои письма.

Таким образом, измените

$Batch->post("op".$i, "lists/$list_id/members", [ ... 

в

$subscriber_hash = $MailChimp->subscriberHash($value); 
$Batch->put("op$i", "lists/$list_id/members/$subscriber_hash", [ ... 

И они послали мне чулок шапку MailChimp за то, что хороший спорт :-)

Вени. Види. Vici.

Смежные вопросы