Mailchimp API表单不发送最终欢迎电子邮件

时间:2016-10-18 08:42:13

标签: php mailchimp mailchimp-api-v3.0

我尝试使用Mailchimp API在我的网站中构建自定义表单。我设法编写了一个PHP脚本,该脚本将我的用户从Mailchimp仪表板中添加到邮件列表中。但是,我在向他们发送自动回复邮件时遇到问题。

这是我的HTML表单:

<form method='post' action='<?= get_template_directory_uri() ?>/mailchimp.php'>
    <input type='text' name='email'/>
    <input type='submit' name='submit' value='Subscribe'/>
</form>

这是我的代码,它处理对Mailchimp的请求并将用户添加到列表中:

session_start();
if(isset($_POST['submit'])){
    $email = $_POST['email'];
    if(!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL) === false){
        // MailChimp API credentials
        $apiKey = 'xxx';
        $listID = 'xxx';

        // MailChimp API URL
        $memberID = md5(strtolower($email));
        $dataCenter = substr($apiKey,strpos($apiKey,'-')+1);
        $url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listID . '/members/' . $memberID;

        // member information
        $json = json_encode([
            'email_address' => $email,
            'status'        => 'subscribed'
        ]);

        // send a HTTP POST request with curl
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        echo "<h1>$httpCode</h1>";
        return $httpCode;

    }
}

我知道您不能向所有人发送最终欢迎电子邮件,除非他们在您的列表中标记为subscribed。我了解Mailchimp强制执行双重optin政策,除非使用API​​设置用户状态订阅,如下所示:

// member information
        $json = json_encode([
            'email_address' => $email,
            'status'        => 'subscribed'
        ]);

但由于某种原因,我在订阅列表时仍然没有收到电子邮件。有人会对我做错了什么有任何建议。

我确保从Mailchimp的后端确保设置了最终欢迎电子邮件。

1 个答案:

答案 0 :(得分:1)

我设法解决了我的问题,我在这里发布这个答案给任何可能遇到类似问题的人,通过单一选择加入过程发送欢迎电子邮件。

双重选择

Mailchimp实施双重选择加入政策,注册您的简报/服务的用户将收到2封电子邮件。第一个是确认电子邮件,使用户能够确认他们要求加入您的列表。第二个是欢迎电子邮件 - 只有在用户添加到您的列表后才会发送。

覆盖正在进行的双重选择

您可以使用Mailchimp API覆盖此功能。您必须确保添加状态为subscribed的用户,以便他们不必经历双重选择加入过程。但是,这仍然不意味着发送欢迎电子邮件。

发送欢迎电子邮件

要发送此欢迎电子邮件,您必须设置自动化规则。此规则应包含在用户订阅列表后立即触发的触发器。您可以在Mailchimp后端设置这些规则。通过这样做,您可以通过单个选择加入过程向订阅者发送欢迎电子邮件。

自动化规则

请记住,自动化规则每封电子邮件只会触发一次。因此,如果有人要取消订阅或从列表中删除并重新订阅相同的电子邮件,则不会收到欢迎电子邮件。

适用于Wordpress

如果您使用的是Wordpress,那么处理与Mailchimp的集成的pluginMailchimp for Wordpress List<Data> dataList = new List<Data>(); IEnumerable<School> schools = from d in dataList group d by new { SchoolId = d.SchoolId, SchoolName = d.SchoolName } into groupSchool select new School { SchoolId = groupSchool.Key.SchoolId, SchoolName = groupSchool.Key.SchoolName, Teachers =new List<Teacher>(groupSchool.Select(x => new Teacher { TeacherId = x.TeacherId, TeacherName = x.TeacherName })) }; 。然而,由于它自己不能工作 - 您需要通过mailchimp帐户添加自动化以发送欢迎电子邮件。

我希望这有助于将来的人们!