Как проверить, существует ли почта, еще что-нибудь сделать - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть файл. php, который подписывает пользователя на мой список в MailChimp. Я получаю почту с URL-адреса следующим образом: https://example.com/subscribe-NLL.php?email=myemail@gmail.com

Пока работает, но теперь я хочу проверить, есть ли пользователь в моей аудитории. Если почта существует, я хочу продолжить как в моем коде ниже. Если письмо не в моей аудитории, я хочу подписать его с ожидающим статусом, а также отправить doubele optin. Есть идеи, как это сделать?

Я попробовал следующее, но это не работает.

if ($url->{'status'} == 400) {
        $json = json_encode([
            'email_address' => $email,
            'status'        => 'pending', //pass 'subscribed' or 'pending'
            'interests'     => array( 
                '1234' => true,
             ),
        ]);
} else {
        $json = json_encode([
            'email_address' => $email,
            'status'        => 'subscribed', //pass 'subscribed' or 'pending'
            'interests'     => array( 
                '1234' => true,
             ),
        ]);
}

Вот мой полный рабочий код:

<?php

    $email = $_GET['email'];
    $memberId   = md5(strtolower($email));
    $list_id = '1234';
    $api_key = '1234-us19';

    $data_center = substr($api_key,strpos($api_key,'-')+1);

    $url = 'https://'. $data_center .'.api.mailchimp.com/3.0/lists/'. $list_id .'/members/' . $memberId;

    $json = json_encode([
        'email_address' => $email,
        'status'        => 'subscribed', //pass 'subscribed' or 'pending'
        'interests'     => array( 
            '1234' => true,
         ),
    ]);

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);

    $result = curl_exec($ch);
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    echo $status_code;

    header( "HTTP/1.0 302 Found" );
    header( "Status: 302" ); # this is for chrome compliance
    header ('Location: https://thankyoupage.com'); 
    die();

?>
...