programing

Mailchimp 오류: 잘못된 요청 - 캠페인을 보낼 준비가 되지 않았습니다.

goodsources 2023. 10. 3. 09:12
반응형

Mailchimp 오류: 잘못된 요청 - 캠페인을 보낼 준비가 되지 않았습니다.

저는 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, List ID, Template 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에서 확인해보니 캠페인이 작성되어 있는데 Draft로 저장되어 있습니다.

다음은 내 API 로그입니다.

https://drive.google.com/file/d/0BwIWuJmCDI1vNHgtVm9TQm1FMVU/view?usp=drivesdk 아래 링크를 클릭하면 API 로그를 볼 수 있습니다.

캠페인을 만들고 캠페인 템플릿을 설정할 수는 있지만 이메일을 보낼 수는 없습니다.또한 Mailchimp으로 My Domain을 인증하고 가이드라인을 사용하여 인증합니다.확인 후 해결책을 제시해주시기 바랍니다.

"캠페인을 보낼 준비가 안 되었습니다" 메시지는 그다지 도움이 되지 않지만, MailChimp 자체에서 더 자세한 메시지를 확인할 수 있습니다.API가 작성한 초안을 편집하고 마지막 Confirm 단계로 이동합니다.대부분의 항목이 통과된 체크리스트가 표시되지만 캠페인이 실패한 이유를 설명하는 항목도 표시됩니다.

문제를 복제하려고 할 때 템플릿에 변경되지 않은 기본 자리 표시자 텍스트가 일부 남아 있어 캠페인을 전송하지 못했습니다.게시한 코드는 하나의 블록에 대한 내용만 설정하므로, 이 문제는 아마 사용자가 겪고 있는 것과 동일한 문제일 것입니다.

도움이 되길 바랍니다!

언급URL : https://stackoverflow.com/questions/46238251/mailchimp-error-bad-request-your-campaign-is-not-ready-to-send

반응형