【问题标题】:MailChimp integration Error code 501 - Unsupported request - PHPMailChimp 集成错误代码 501 - 不支持的请求 - PHP
【发布时间】:2023-03-09 00:53:01
【问题描述】:

下面是我将联系人添加到 mailchimp 的代码。我从 laravel 的 env 文件中获取 mailchimp api 密钥和列表 ID。 $data 也涉及所有的输入。

        $apiKey = env('MAILCHIMP_APIKEY');
        $listId = env('MAILCHIMP_LIST_ID');
        $auth = base64_encode( 'user:'.$apiKey);

        $mailChimpdata = array(
            'apikey'        => $apiKey,
            'email_address' => $data['email'],
            'status'        => $data['status'],
            'merge_fields'  => array(
                'FNAME'     => $data['firstname'],
                'LNAME'     => $data['lastname']
            )
        );

        $json_data = json_encode($mailChimpdata);

        $ch = curl_init();
        $memberId = md5(strtolower($data['email']));
      
        $url = 'https://us19.admin.mailchimp.com/3.0/lists/' . $listId . '/members/' . $memberId; 
        curl_setopt($ch, CURLOPT_URL, $url);
        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_VERBOSE, true);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($ch, CURLOPT_POST, true);       
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

        $result = curl_exec($ch);

但我得到以下错误

HTTP/1.0 501 Not Implemented
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 334
Expires: Wed, 07 Apr 2021 08:49:45 GMT
Date: Wed, 07 Apr 2021 08:49:45 GMT
Connection: close
Set-Cookie: _abck=471ED28A26F6757CE57AC9E4318E7BD6~-1~YAAQHdcLF/keKqt4AQAASPOFqwWS/EeAKXso+2igviRTfIMw3pqbDMndhfZPfoX+eQn3Iv8iqfbogtNFmkU4lRDRQLdAWAYBhq2oOhDTiK ▶
Set-Cookie: bm_sz=5CBD698E96AC9E2B62898990FF45E196~YAAQHdcLF/oeKqt4AQAASPOFqwsLVm8fKmxtToeWU99vCUWske+XMuRtEjiCpzXhPE5xe8jGoh6EfYe8WG6zjMaaI2jPZos0gb2ER9jykveOE ▶

<HTML><HEAD>
<TITLE>Unsupported Request</TITLE>
</HEAD><BODY>
<H1>Unsupported Request</H1>
PUT to http&#58;&#47;&#47;us19&#46;admin&#46;mailchimp&#46;com&#47;3&#46;0&#47;lists&#47;applevendor&#47;members&#47;b642b4217b34b1e8d3bd915fc65c4452 not supported.<P> 
Reference&#32;&#35;8&#46;1dd70b17&#46;1617785385&#46;68d39e
</BODY></HTML>

请帮我解决这个问题。

【问题讨论】:

    标签: php api curl mailchimp


    【解决方案1】:

    基于Mailchimp documentation,他们使用网址添加联系人

    "https://us20.api.mailchimp.com/3.0/lists/$list_id/members/"
    

    但你有

    "https://us19.admin.mailchimp.com/3.0/lists/$listId/members/$memberId"
    

    $memberId。我猜id 是他们的内部标识符。

    【讨论】:

    • 现在它给出了 403 Forbidden。 - "status":403,"detail":"提供的 API 密钥链接到数据中心 'us1'",
    • 您的密钥包含-usSomeNumber,因此也可以在请求 URL 中使用它。例如,键 xxxxx-us19 应使用 https://us19.api.mailchimp.com,键 xxxxx-us20 应使用 https://us20.api.mailchimp.com
    【解决方案2】:

    我不知道这个话题是否仍然相关,但这是我使用 php / Guzzle 的方法:

    $client = new Client();
    $client->request('PUT', 'https://us9.api.mailchimp.com/3.0/lists/{list_id}/members/{subscriber_hash}, 
    [
      'json' => [
        'email_address' => $email, 
        'status_if_new' => "unsubscribed",
                ],
      'headers' => [
        "Authorization" => "Basic YOUR_API_KEY"
      ]
    ]);
    

    subscriber_hash => 哈希 MD5

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2014-12-16
      • 2021-04-22
      • 2017-01-27
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多