使用Mailchimp API 2和PHP的Mailchimp_List_AlreadySubscribed致命错误

时间:2014-02-20 21:28:30

标签: php api mailchimp

我正在尝试在我的网站上使用Mailchimp API,以允许用户通过自定义表单订阅我的Mailchimp简报。

工作代码如下:

$message="";
if(isset($_POST) & !empty($_POST)){ 
    $emailsanit=filter_var($_POST['email'],FILTER_SANITIZE_EMAIL);
    $email=filter_var($emailsanit,FILTER_VALIDATE_EMAIL);

    $api_key = "my api key";
    $list_id = "my list id";

    require("Mailchimp.php");
    $Mailchimp = new Mailchimp( $api_key );
    $Mailchimp_Lists = new Mailchimp_Lists( $Mailchimp );
    $subscriber = $Mailchimp_Lists->subscribe( $list_id, array( 'email' => $email ) );

    if ( ! empty( $subscriber['leid'] ) ) {
        $message="<div id='message' class='text-success'>Please check your email inbox to         complete your subscription</div>";
    }
    else
    {
        $message="<div id='message' class='text-danger'>Failed to add email to database.   Please try again or email</div>";
    }
}
?>

正如我所说的,这很好用,我遇到的问题是,如果有人输入已经注册的电子邮件地址,我会收到以下错误,显然没有其他任何内容加载:

  

致命错误:带有消息'example@example.com的未捕获异常'Mailchimp_List_AlreadySubscribed'已订阅列表XX。

有关如何制定规则的任何建议,以便在已注册电子邮件时更新消息变量(表单在同一页面上处理)?

这篇文章MailChimp API 2.0 and PHP Subscribe Form有人有同样的问题,但我真的不明白解决方案。

2 个答案:

答案 0 :(得分:2)

我用代码捕获错误:

try {
    $api->lists->subscribe('[LIST_ID]', array('email' => $_POST['email']));
    echo 'success';
} catch(Mailchimp_Error $e) {
    echo 'fail';
    //echo $e->getMessage();
}

答案 1 :(得分:0)

现在看起来有点老了,但是因为我正在使用MailChimp,所以捕获错误的方法如下:

begin 
  # code for subscribing email to the list
rescue Mailchimp::ListAlreadySubscribedError
  # code with flash error and redirection
end

这假定使用以下gem:

 gem 'mailchimp-api', require: 'mailchimp'