Mailchimp 错误:错误请求 - 您的广告系列尚未准备好发送

Posted

技术标签:

【中文标题】Mailchimp 错误:错误请求 - 您的广告系列尚未准备好发送【英文标题】:Mailchimp Error: Bad Request - Your Campaign is not ready to send 【发布时间】:2018-02-24 13:38:08 【问题描述】:

我正在使用以下教程使用 php 在 MailChimp 中创建活动并发送电子邮件。

https://isabelcastillo.com/create-send-mailchimp-campaign-api-3

我的代码是

    require_once('../wp-load.php');

    function isa_mailchimp_api_request( $endpoint, $type = 'POST', $body = '' ) 
     
    // Configure -------------------------------------- 
    $api_key = 'API KEY HERE'; // Changed API Key here 
    // STOP Configuring ------------------------------- 
    $core_api_endpoint = 'https://<dc>.api.mailchimp.com/3.0/';
    list(, $datacenter) = explode( '-', $api_key );
    $core_api_endpoint = str_replace( '<dc>', $datacenter, $core_api_endpoint );

    $url = $core_api_endpoint . $endpoint;  
    //print_r($url );

    $request_args = array(
        'method'      => $type,
        'timeout'     => 20,
        'headers'     => array(
            'Content-Type' => 'application/json',
            'Authorization' => 'apikey ' . $api_key
        )
    );

    if ( $body ) 
        $request_args['body'] = json_encode( $body );
    

    $request = wp_remote_post( $url, $request_args );
    $response = is_wp_error( $request ) ? false : json_decode( wp_remote_retrieve_body( $request ) );


    echo '<pre>';
    print_r($response); 

    return $response;   
    



    function isa_create_mailchimp_campaign( $list_id, $subject )     
    $reply_to   = 'info@newslume.com';
    $from_name  = 'NewsLume';
    $subject= 'Another new test message 14 17'; 
    $campaign_id = ''; 
    $body = array(
        'recipients'    => array('list_id' => $list_id),
        'type'          => 'regular',
        'settings'      => array('subject_line' => $subject,
                                'title' => 'a  test title NewsLUme',
                                'reply_to'      => $reply_to,
                                'from_name'     => $from_name,
                                'use_conversation'=> false,
                                'to_name'=> 'sajid',

                                'auto_footer'=> false,
                                'inline_css'=> false,
                                'auto_tweet'=> false,
                                'drag_and_drop'=> false

                                )
    );

    $create_campaign = isa_mailchimp_api_request( 'campaigns', 'POST', $body ); 

    if ( $create_campaign ) 
        if ( ! empty( $create_campaign->id ) && isset( $create_campaign->status ) && 'save' == $create_campaign->status ) 
            // The campaign id: 
            $campaign_id = $create_campaign->id;
        
    

    return $campaign_id ? $campaign_id : false;

    

function isa_set_mail_campaign_content( $campaign_id, $template_content  ) 
    $set_content = '';
    $set_campaign_content = isa_mailchimp_api_request( "campaigns/$campaign_id/content", 'PUT', $template_content ); 

    if ( $set_campaign_content ) 
        if ( ! empty( $set_campaign_content->html ) ) 
            $set_content = true;
        
                   
    return $set_content ? true : false;



$list_id='my_list_id_here'; // LIST HERE

$campaign_id = isa_create_mailchimp_campaign( $list_id, $subject );

if ( $campaign_id )  
    // Set the content for this campaign 
   $template_content = array( 
        'template' => array( 
                // The id of the template to use. 
                'id' => 47615, // INTEGER   
                'sections'  => array(                     
                    'tst_content' => 'THIS IS THE CONTENT BODY OF MY EMAIL MESSAGE.' 
            )

        )
    );
    $set_campaign_content = isa_set_mail_campaign_content( $campaign_id, $template_content );


    if ( $set_campaign_content ) 

        $send_campaign = isa_mailchimp_api_request( "campaigns/$campaign_id/actions/send", 'POST' ); 
        if ( empty( $send_campaign ) )  
            // Campaign was sent! 
         elseif( isset( $send_campaign->detail ) )  
            $error_detail = $send_campaign->detail;

        

    


我已更新所有值,包括 API KEY、列表 ID、模板 ID 等,但仍然出现错误

这里是错误对象

stdClass Object ( [type] => http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/ [title] => Bad Request [status] => 400 [detail] => Your Campaign is not ready to send. [instance] => 89dc8734-2611-4f3b-a4f7-d18bd181bded )

我在 Mail Chimp 中签入,在那里创建了营销活动,但它们被保存为草稿。

这是我的 API 日志

API 日志可以通过点击下面的链接查看 https://drive.google.com/file/d/0BwIWuJmCDI1vNHgtVm9TQm1FMVU/view?usp=drivesdk

我可以创建活动,为活动设置模板,但我无法发送电子邮件。 My Domain 也通过 Mailchimp 使用指南进行验证和认证。 请检查并提出解决方案

【问题讨论】:

我也面临同样的问题。我的问题是,所有列表中所有订阅者的总和超过了 mailchimp 给出的免费订阅者限制(即 2000)。 【参考方案1】:

虽然“您的广告系列尚未准备好发送”消息不是很有帮助,但您可以在 MailChimp 本身中查看更详细的消息。编辑 API 创建的草稿,然后导航到最后的确认步骤。您会看到一个清单,其中大部分项目都通过了,但也会有一个项目说明活动失败的原因。

当我尝试复制该问题时,活动未能发送,因为模板中的一些默认占位符文本未更改。由于您发布的代码仅设置了一个块的内容,这可能与您遇到的问题相同。

希望这会有所帮助!

【讨论】:

你好乔尔。谢谢你的建议。我联系了 Mail chimp,他们告诉我同样的事情,问题出在我使用的电子邮件模板上。我从电子邮件中删除了所有内容,然后添加了虚拟文本进行检查,一切顺利。感谢您的帮助。 @OptimumCreative 乐于助人! 我也遇到了同样的问题。我的问题是,所有列表中所有订阅者的总和超过了 mailchimp 给出的免费订阅者限制(即 2000)。

以上是关于Mailchimp 错误:错误请求 - 您的广告系列尚未准备好发送的主要内容,如果未能解决你的问题,请参考以下文章

发生一个或多个错误。(发送请求时发生错误)Mailchimp 列表集成

Laravel + Guzzle + MailChimp - 400 错误请求

向 MailChimp 添加新订阅者返回错误请求

Mailchimp API 错误 - 对一直有效的代码的错误请求

Mailchimp 错误收件人最近的注册请求太多

Wordpress:在没有插件的情况下集成 Mailchimp 错误请求 400 Ajax URL