如何处理电子邮件已经存在mailchimp api代码php中的错误

时间:2013-11-19 09:13:17

标签: php mailchimp

我有这段代码:

    App::import('Vendor', 'mailchimp', array('file' => 'mailchimp/Mailchimp.php'));
    $key = Configure::read("MAILCHIMP_KEY");
    $list_id = 'xxxxxxxx';
    $email=array('email' => $email_id);
    $merge_vars = array(
        'FNAME' => $fname, 
        'LNAME' => $lname,             
        'groupings' => 
            array(
                'name' => array('TestGroupTitle'),
                'groups' => array('TestGroup')
            )
        );

    $double_optin='false';
    $mailchimp = new Mailchimp($key);

    // sample to take help
    // subscribe(string apikey, string id, struct email, struct merge_vars, string email_type, bool double_optin, bool update_existing, bool replace_interests, bool send_welcome)
    $result = $mailchimp->lists->subscribe($list_id, $email, $merge_vars, 'html', $double_optin, false, true, false);

当我第一次添加我的电子邮件ID时,它正常工作但如果再次添加相同的电子邮件,则会显示此错误:xxxx@xx.com已订阅列出XXX简报。点击此处更新您的个人资料。

我没有回应任何事情,但这个消息仍在传播。

我也知道在调试后我得到了什么错误:

array(
'status' => 'error',
'code' => (int) 214,
'name' => 'List_AlreadySubscribed',
'error' => 'xxxx is already subscribed to list xxxx Newsletter. Click here to update your profile.'
)

我也试过这个,但什么都没发生。

  if ($mailchimp->errorCode) {
        $error['Code'] = $this->_mailChimp->errorCode;
        $error['Message'] = $this->_mailChimp->errorMessage;
        pr($error);
        pr($error['Code']);
    } 

我正在使用PHP和Mailchimp api 2.0。任何帮助将受到高度赞赏。我浪费了这一整天的时间。 :(

3 个答案:

答案 0 :(得分:3)

我同意希沙姆一样,对于像我这样的菜鸟,谷歌多次用Google搜索,但在看到希沙姆自己的答案暗示我之前,仍然无法找到真正有用的解决方案。这是一个更详细的例子,以防将来有人需要它

// Your Mailchimp API Key 
$apikey = 'xxxxxxxxxxxxxx'; 
// List ID
$list_id = 'xxxxxxxxxx';
// Initializing the $MailChimp object
$mc = new Mailchimp($apikey);

    try {
            //MAILCHIMP API call subscribe() ---- email only 
            $mc->lists->subscribe($list_id,  array(
                "email"  => $email
            ));

    } catch (Exception $e) {

        echo 'Caught exception: ',  $e->getMessage(), "\n";

    }

答案 1 :(得分:2)

找到答案,并希望与面临同样问题的人分享。 在之前的Mailchimp版本中,它很容易处理,但是从2.0开始,你需要使用try catch块。

答案 2 :(得分:1)

您是否尝试过使用:

' update_existing' =>真

在您的参数中?