2014-02-20 48 views
1

我試圖在我的網站上使用Mailchimp API來允許人們通過自定義窗體訂閱我的Mailchimp通訊。Mailchimp_List_Already訂閱致命錯誤使用Mailchimp API 2和PHP

工作代碼如下:

$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>"; 
    } 
} 
?> 

正如我說的,這工作得很好,我遇到的問題是,如果有人進入一個已經註冊的我碰到下面的錯誤,顯然沒有一個電子郵件地址其他負載:

Fatal error: Uncaught exception 'Mailchimp_List_AlreadySubscribed' with message '[email protected] is already subscribed to list XX.

任何建議,我怎麼能去製作一個規則,這樣,如果一個電子郵件地址已經被註冊的消息變量更新(形式在同一頁上處理)?

此帖子MailChimp API 2.0 and PHP Subscribe Form有人有同樣的問題,但我並不真正瞭解解決方案。

+1

你需要捕捉拋出的異常。 –

+0

首先想到的是在調用$ Mailchimp_Lists-> subscribe()之前檢查訂閱者是否存在。嘗試使用Mailchimp_Lists-> memberInfo()來做到這一點。 – lwitzel

+0

謝謝你們。我無法解決如何配置memberinfo函數來專門查看用戶是否已經註冊,但如果收到錯誤,我確實設法使用它來產生錯誤消息,並停止發送現在足夠好的消息。謝謝! – JonnyHarper

回答

0

現在,這似乎有點老了,但因爲我工作MailChimp,捕獲錯誤的方法如下:

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

這假定使用下列寶石:

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

我趕上了錯誤的代碼:

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

這對我有效... – Andrew