当在 mailchimp 中访问 url 时,将 email/campaign 发送到列表

Send out email/campaign to a list when url is visited in mailchimp

你好 Whosebug :)

我正在为每天都有电子报的客户构建脚本。

电子报是由第 3 方构建的,当他们发布它时,他们可以让他们的系统访问我们选择的 URL。

当他们的系统访问我们的 URL 时,我们不希望将 mailchimp 自动电子邮件(带有 link 到电子报)发送给我们列表中的每个人.

所以我的问题是: Mailchimp 中的自动付费功能可以为我们做这个吗?或者我们是否需要使用 mailchimp API 在 URL 处理发送到列表的自动电子邮件?如果是后者,我应该在文档中查看哪些方法?

不是在寻找完整的答案,而是在寻找正确的方向:)

Google 没有帮助我解决以下问题:"send out email to a list when url is visited"、"send email campaign to list when url is visited" 这就是我现在求助于您的原因:)

提前致谢

一般来说,您可以使用 MailChimp 的目标和自动化功能来完成这样的事情。但是,您正在处理动态生成的 URL,需要将其包含在您的电子邮件中。到目前为止,除了目标脚本自动传输的数据外,我还没有找到将信息从 "Goal page" 传输到 MailChimp 的方法。

所以我认为您正在寻找一份 API 工作。您需要使用 "Campaigns" 方法 (http://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/)。

请注意,创建和发送活动是整个过程的两个不同步骤。您将在同一页面的 "Action" 下找到 "send" 方法。只需获取 "create" 方法返回的 ID,将其提供给 "send" 方法,然后观看奇迹发生。

希望对您有所帮助!

这是它的全部荣耀!它解决了我遇到的问题:)

<?php
        /**
         * Method for communicating with mailchimp API
         *
         * @param str   $method  Which url you need to access in the Mailchimp API
         * @param str   $type Which type of request (POST, GET etc)
         * @param array $data Do you need to pass data along aswell in a multi dimensional array?
         * 
         * @author Kenneth Johnsen <Johns3n@gmail.com>
         * @return Server Header Response
         */ 
        function request($method,$type, $data = false){
            $apiKey = '<API KEY>';
            $dataCenter = substr($apiKey,strpos($apiKey,'-')+1);

            $url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0'.$method;

            $ch = curl_init($url);

            curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

            if($data){
                curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($data));
            }

            $result = curl_exec($ch);

            curl_close($ch);

            return $result;
        }


        // GET VARIABLES THAT MIGHT CHANGE DEPENDING ON E-PAPER SUPPLIER:
        // -------------------------------------------------------------------------------------
        $paper = 'Name of Company';
        $replyTo = 'noreply@companyname.com';
        $templateId = 65;


        // CREATE CAMPAIGN AND RETURN THE ID SO WE CAN EDIT IT ASWELL:
        // -------------------------------------------------------------------------------------
        $campaign = array(
            'type' => 'regular',
            'recipients' => array(
                    'list_id' => '<LIST ID>'
                ),
            'settings' => array(
                    'subject_line' => 'E-paper for '.$paper.' is now ready!',
                    'title' => $paper.' E-Paper Notification ('.date("d/m-Y").')',
                    'from_name' => $paper,
                    'reply_to' => $replyTo,

                )
        );

        $createCampaign = request('/campaigns','POST',$campaign);
        $createCampaign = json_decode($createCampaign);


        // EDIT THE CAMPAIGN TO MATCH TEMPLATE ID:
        // -------------------------------------------------------------------------------------
        $editCampaign = array(
            'template' => array(
                    'id' => $templateId
                )
        );

        $updateCampaign = request('/campaigns/'.$createCampaign->id.'/content','PUT',$editCampaign);


        // SCHEDULE THE CAMPAIGN FOR LAUNCH FROM NEAREST QUARTER MINUTE + ANOTHER 30 MINUTES:
        // -------------------------------------------------------------------------------------
        $time = time();
        $time = round($time / (15 * 60)) * (15 * 60) + (30 * 60);
        $time = date('i',$time);

        $timeSchedule = date('Y-m-dTH:'.$time.':00+01:00');

        $schedule = array(
            'schedule_time' => $timeSchedule
        );

        $scheduleCampaign = request('/campaigns/'.$createCampaign->id.'/actions/schedule','POST',$schedule);

        var_dump($scheduleCampaign);