在 mailchimp 中访问 url 时向列表发送电子邮件/活动


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

Hello Stackoverflow :)

我正在为一个客户构建一个脚本,该脚本每天都有一份电子论文。

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

当他们的系统访问我们的URL时,我们不希望将mailchimp自动电子邮件(带有指向电子论文的链接)发送给我们列表中的每个人。

所以我的问题是:Mailchimp中的自动付费功能可以为我们做到这一点,还是我们需要在URL上使用mailchimp API编写脚本来处理自动发送到列表的电子邮件?如果是后者,我应该在文档中研究哪些方法?

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

Google没有帮助我解决以下问题:"访问URL时向列表发送电子邮件","访问URL时发送电子邮件活动以列出"这就是为什么我现在转向您:)

提前致谢

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

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

请注意,创建和发送广告系列是整个过程的两个不同步骤。您会在同一页面上的"操作"下找到"发送"方法。只需获取"create"方法返回的ID,将其输入"发送"方法,然后观察奇迹发生。

希望这有帮助!

这是所有的荣耀!它解决了我:)的问题

<?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);