0

这是我的做法:

$debug = true;
$auth = base64_encode( 'user:'. APIKEY );

$data = array(
    'schedule_time' => date('Y-m-d H:i:s',strtotime("+1 hour")),
    'timewarp' => false
    );
$json_data = json_encode($data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://'.SERVER.'.api.mailchimp.com/3.0/campaigns/'.$campaign_id.'/actions/schedule');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
    'Authorization: Basic '. $auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

$result = curl_exec($ch);

if ($debug) {
    var_dump($result);
}

这将给出一个错误:

schedule_time 只能以 15 分钟为间隔,例如 13:15 而不是 13:10

4

1 回答 1

0

这是旧的,但也可以回答任何偶然发现此问题的人:

因此,正如错误消息所说,您只能将活动安排在 15 分钟的倍数上,例如 X:00、X:15、X:30 和 X:45。因此,您使用

date('Ymd H:i:s',strtotime("+1 小时"))

意味着你的日程安排总是会失败,除非你得到一些非常好的时机。

我发现有用的是为用户提供一个步长为 15 的 Timepicker 下拉菜单:

$('.timepicker').timepicker({ 'scrollDefault': 'now', 'step': 15, 'timeFormat': 'H:i' });

除了典型的日期选择器之外,当触发调度时,我会将两者组合成 Mailchimp 想要的 ATOM 格式:

    var date = $("#schedule_date").val(); //Date from the Datepicker     
    var time = $("#schedule_time").val(); //Time from the 15min step Timepicker   
    var offset = new Date().getTimezoneOffset()/60; // I believe Mailchimp likes to have it in UTC    
    var datetime=new Date(date+'T'+time+':00'+((offset<0)?"+":"-")+((offset>-10 && offset<10)?"0":"")+offset+':00');  // Constructing ATOM time (example: 2005-08-15T15:52:01+00:00)    
    var datestring = datetime.toISOString();   
    datestring = datestring.substring(0, datestring.length - 5)+'+00:00';  
于 2017-05-29T17:00:31.193 回答