不断获取错误的apikey Elasticemail

时间:2018-12-10 00:49:57

标签: php post

我正在使用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“] =>字符串(36)” ----我的apikey在这里-----“   [“ from”] =>字符串(20)“ genecode@gmail.com” [“ fromName”] =>字符串(20)   “ genecode@gmail.com” [“主题”] =>字符串(12)“ [错误报告]” [“至”] =>   字符串(23)“ genecode@gmail.com” [“ bodyHtml”] =>字符串(4)“测试”   [“ isTransactional”] => bool(true)}

结果是:

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

我不知道我做错了什么。

编辑:我尝试安装Postman。并测试它似乎可以正常工作。我猜我的数组构建有问题吗?

2 个答案:

答案 0 :(得分:0)

好的,我找到了答案。似乎我的猜测是正确的,因为我建立后场的方式不正确。正确的方法是在将数组传递给CURLOPT_POSTFIELDS之前在数组上使用http_build_query。

然后就可以了。

代码:

$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
    ));

答案 1 :(得分:0)

为正确起见,应在pa​​rams数组上运行json_encode

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

或将参数作为formdata发送。 请注意,在查询字符串中发送apikey不是安全的解决方案(这是您使用http_build_query所做的事情)。您还可以使用我们的官方api library,它将为您解决这个问题。