我正在尝试在我的网站上使用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有人有同样的问题,但我真的不明白解决方案。
答案 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'