PHP 使用 curl 将电子邮件列表发送到 Sparkpost API



我想使用 curl 将电子邮件列表发送到 sparkpost API 这是Sparkpost文档中的卷曲

curl -v 
-H "Content-Type: application/json" 
-H "Authorization: $API_KEY" 
-X GET "https://api.sparkpost.com/api/v1/metrics/deliverability/aggregate?campaigns=testjob&from=2014-01-23T14:00&metrics=count_targeted,count_sent,count_accepted&timezone=America%2FNew_York&to=2014-06-23T15:50"

我如何使用 PHP curl 执行此操作

如果你想在SparkPost服务器上创建一个电子邮件列表,你可以使用这个API: https://developers.sparkpost.com/api/recipient-lists.html#recipient-lists-create-post 下面是PHP中的一个例子:

<?php
$request = new HttpRequest();
$request->setUrl('https://api.sparkpost.com/api/v1/recipient-lists');
$request->setMethod(HTTP_METH_POST);
$request->setQueryData(array(
'num_rcpt_errors' => '3'
));
$request->setHeaders(array(
'Cache-Control' => 'no-cache',
'Authorization' => $YOUR_API_KEY_HERE // put your API key here
));
// You will need to put PHP code that reads from your DB and puts Your recipients in that array below. You only need the address->name and address-email bit if you don't have additional metadata
$request->setBody('{
"id": "unique_id_4_graduate_students_list",
"name": "graduate_students",
"description": "An email list of graduate students at UMBC",
"attributes": {
"internal_id": 112,
"list_group_id": 12321
},
"recipients": [
{
"address": {
"email": "wilmaflin@example.com",
"name": "Wilma"
},
"tags": [
"greeting",
"prehistoric",
"fred",
"flintstone"
],
"metadata": {
"age": "24",
"place": "Bedrock"
},
"substitution_data": {
"favorite_color": "SparkPost Orange",
"job": "Software Engineer"
}
},
{
"address": {
"email": "abc@example.com",
"name": "ABC"
},
"tags": [
"driver",
"flintstone"
],
"metadata": {
"age": "52",
"place": "MD"
},
"substitution_data": {
"favorite_color": "Sky Blue",
"job": "Driver"
}
},
{
"address": {
"email": "fred.jones@example.com",
"name": "Grad Student Office",
"header_to": "grad-student-office@example.com"
},
"tags": [
"driver",
"fred",
"flintstone"
],
"metadata": {
"age": "33",
"place": "NY"
},
"substitution_data": {
"favorite_color": "Bright Green",
"job": "Firefighter"
}
}
]
}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}

假设您想向下面存储在SparkPost中的收件人列表发送电子邮件,这是在PHP中执行此操作的一种方法。

为此,您需要在此处 https://app.sparkpost.com/lists/recipients SparkPost中创建"收件人列表",并在下面的请求中提供列表的ID。您还需要一个允许 REST 注入的 API 密钥,可以在此处创建 https://app.sparkpost.com/account/credentials 您还需要一个有效的发送域,我假设您已经在 SparkPost 中设置了该域。

<?php
$request = new HttpRequest();
$request->setUrl('https://api.sparkpost.com/api/v1/transmissions');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'Cache-Control' => 'no-cache',
'Authorization' => $YOUR_SPARKPOST_API_KEY . // Put your "real" API key here or better set a variable and use that
));
$request->setBody('{
"options": {
"open_tracking": true,
"click_tracking": true
},
"campaign_id": "test_campaign",
"recipients": {
"list_id": "unique_id_4_graduate_students_list" // Put your List ID here from here https://app.sparkpost.com/lists/recipients
},
"content": {
"from": {
"email": "test@test.example.com", // Change this to your proper from address
"name": "John Doe"
},
"subject": "simple subject",
"text": "simple text content",
"html": "<b>Your HTML Content</b>"
}
}
');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}

这里有一些提示,可能会让你更快地开始。这里有一个SparkPost PHP库:https://github.com/SparkPost/php-sparkpost

此外,有关更多"实时"问题和答案,您可以在此处加入社区Slack: http://slack.sparkpost.com/一旦您进入,请查看 #php 频道。

如果你想熟悉这个API,你可以试试PostMan资源。这里有一篇很好的博客文章,可以帮助你开始: https://www.sparkpost.com/blog/how-to-run-sparkpost-postman/一旦你有了这个,PostMan就可以用最常见的语言生成代码,以帮助你快速开始。

$ch = curl_init("https://api.sparkpost.com/api/v1/metrics/deliverability/aggregate?campaigns=testjob&from=2014-01-23T14:00&metrics=count_targeted,count_sent,count_accepted&timezone=America%2FNew_York&to=2014-06-23T15:50");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: $API_KEY',
'Content-Type: application/json'
));
$data = curl_exec($ch);
curl_close($ch);

详细信息:文档

如果你有权访问 shell_exec(),你可以把它作为 shell 命令行调用:

<?php
$output = shell_exec('curl -H "Content-Type: application/json" -H "Authorization: '.$API_KEY.'" -X GET "https://api.sparkpost.com/api/v1/metrics/deliverability/aggregate?campaigns=testjob&from=2014-01-23T14:00&metrics=count_targeted,count_sent,count_accepted&timezone=America%2FNew_York&to=2014-06-23T15:50"');
echo $output;
?>

假设您只对服务器响应感兴趣,我已经从命令行中删除了 -v 参数,该参数代表详细模式,详细模式会打印有关 curl 请求的额外调试信息,这将扰乱输出,有关如何在命令行中使用 curl 的更多信息使用man curl

最新更新