Продолжайте получать неправильные apikey Elasticemail - PullRequest
0 голосов
/ 10 декабря 2018

Я использую ElasticEmail API для отправки электронной почты с моего сайта php.Я уверен, что я скопировал вставил правильный ключ API.Мой аккаунт тоже активен.Вот мой код:

    $postStr = array(
    'apikey' => 'MY-KEY',
    'from' => $fromEmail,
    'fromName' => $fromEmail,
    'subject' => '[Bug Report]',
    'to' => $notifyEmail,
    'bodyHtml' => $bugDetails,
    'isTransactional' => true);


    var_dump($postStr);

    $ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $post,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => false,
        CURLOPT_SSL_VERIFYPEER => false
    ));

    $result=curl_exec ($ch);
    curl_close ($ch);

     echo $result;  

содержимое vardump:

array (7) {["apikey"] => string (36) "---- мой apikey здесь----- "[" from "] => string (20)" genecode@gmail.com "[" fromName "] => string (20)" genecode@gmail.com "[" subject "] => строка (12) "[Bug Report]" ["to"] => string (23) "genecode@gmail.com" ["bodyHtml"] => string (4) "Test" ["isTransactional"] => bool (true))}

результат:

{"success":false,"error":"Incorrect apikey"}

Я не знаю, где я поступил неправильно.

РЕДАКТИРОВАТЬ: Я пытался установить Почтальон.И проверить это там, кажется, работает.Я думаю, что-то не так с моим построением массива?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Чтобы все было правильно, вы должны запустить json_encode для массива параметров

$postStr = json_encode(array(
'apikey' => 'MY-KEY',
'from' => $fromEmail,
'fromName' => $fromEmail,
'subject' => '[Bug Report]',
'to' => $notifyEmail,
'bodyHtml' => $bugDetails,
'isTransactional' => true));

или отправить параметры в виде данных.Обратите внимание, что отправка apikey в строке запроса не является безопасным решением (и это то, что вы делаете с http_build_query).Вы также можете использовать нашу официальную библиотеку API , которая покроет это для вас.

0 голосов
/ 10 декабря 2018

Хорошо, я нашел ответ.Кажется, мое предположение было верным, что способ создания постполей был неправильным.Правильный способ - использовать http_build_query для массива перед передачей его в CURLOPT_POSTFIELDS.

Тогда все работает нормально.

Код:

$postSafe = http_build_query($postStr);
$ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $postSafe,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => false,
        CURLOPT_SSL_VERIFYPEER => false
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...