如何在 php 中通过 Curl 正确使用 Mailgun Api
how to properly use Mailgun Api via Curl in php
我有来自 mailgun 的 curl 请求,我想用它来为我网站上的时事通讯创建电子邮件列表。
curl -s --user 'api:YOUR_API_KEY' \
https://api.mailgun.net/v3/lists \
-F address='LIST@YOUR_DOMAIN_NAME' \
-F description='Mailgun developers list'
我的问题是当我运行下面的代码时,它显示无效私钥401
似乎我没有在 curl 请求中正确设置 api 键。下面是我目前的编码
<?php
$email = 'tmack@gmail.com';
$api_key = 'my key here';
$api = 'api:';
$api_k = $api.$api_key;
$url = 'https://api.mailgun.net/v3/lists';
$json = json_encode([
'address' => $email,
'description' => 'Tmack group Mailing List'
]);
$ch = curl_init($url);
//curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_k);
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_POST, 1);
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);
echo $result;
curl_close($ch);
echo $status_code;
下面的代码对我有用。我刚刚在下面添加了代码行
curl_setopt($ch, CURLOPT_USERPWD, 'api:' . $api_k);
下面是最终代码
$email = 'tmack@gmail.com';
$api_key = 'my key here';
$api = 'api:';
$api_k = $api.$api_key;
$url = 'https://api.mailgun.net/v3/lists';
$json = json_encode([
'address' => $email,
'description' => 'Tmack group Mailing List'
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, 'api:' . $api_k);
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_POST, 1);
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);
echo $result;
curl_close($ch);
echo $status_code;
我有来自 mailgun 的 curl 请求,我想用它来为我网站上的时事通讯创建电子邮件列表。
curl -s --user 'api:YOUR_API_KEY' \
https://api.mailgun.net/v3/lists \
-F address='LIST@YOUR_DOMAIN_NAME' \
-F description='Mailgun developers list'
我的问题是当我运行下面的代码时,它显示无效私钥401 似乎我没有在 curl 请求中正确设置 api 键。下面是我目前的编码
<?php
$email = 'tmack@gmail.com';
$api_key = 'my key here';
$api = 'api:';
$api_k = $api.$api_key;
$url = 'https://api.mailgun.net/v3/lists';
$json = json_encode([
'address' => $email,
'description' => 'Tmack group Mailing List'
]);
$ch = curl_init($url);
//curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_k);
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_POST, 1);
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);
echo $result;
curl_close($ch);
echo $status_code;
下面的代码对我有用。我刚刚在下面添加了代码行
curl_setopt($ch, CURLOPT_USERPWD, 'api:' . $api_k);
下面是最终代码
$email = 'tmack@gmail.com';
$api_key = 'my key here';
$api = 'api:';
$api_k = $api.$api_key;
$url = 'https://api.mailgun.net/v3/lists';
$json = json_encode([
'address' => $email,
'description' => 'Tmack group Mailing List'
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, 'api:' . $api_k);
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_POST, 1);
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);
echo $result;
curl_close($ch);
echo $status_code;