Reputation: 75
I would like to send email list to sparkpost API using curl here is the curl as in sparkpost docs
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"
How do i do this with PHP curl
Upvotes: 0
Views: 1543
Reputation: 1720
If you have access to shell_exec() you could invoke it as a shell command line:
<?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;
?>
Assuming that you're interested in the server response only, I've removed the -v argument from the command line which stands for verbose mode, verbose mode prints extra debugging information about the curl request which will mess with the output, for more on how to use curl in command line use man curl
Upvotes: 0
Reputation: 1505
If you want to create an email list on the SparkPost server you can use this API: https://developers.sparkpost.com/api/recipient-lists.html#recipient-lists-create-post here is an example in 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": "[email protected]",
"name": "Wilma"
},
"tags": [
"greeting",
"prehistoric",
"fred",
"flintstone"
],
"metadata": {
"age": "24",
"place": "Bedrock"
},
"substitution_data": {
"favorite_color": "SparkPost Orange",
"job": "Software Engineer"
}
},
{
"address": {
"email": "[email protected]",
"name": "ABC"
},
"tags": [
"driver",
"flintstone"
],
"metadata": {
"age": "52",
"place": "MD"
},
"substitution_data": {
"favorite_color": "Sky Blue",
"job": "Driver"
}
},
{
"address": {
"email": "[email protected]",
"name": "Grad Student Office",
"header_to": "[email protected]"
},
"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;
}
Assuming you want to send an email to a list of recipients you have stored in SparkPost below is one way to do it in PHP.
For this to work you will need to create a "recipient list" in SparkPost here https://app.sparkpost.com/lists/recipients and provide the ID of the list in the request below. You will also need an API key that allows REST Injection which can be created here https://app.sparkpost.com/account/credentials You will also need a valid sending domain which I assume you have already setup in 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": "[email protected]", // 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;
}
Here are a few more tips that may get your going quicker. There is a SparkPost PHP library here: https://github.com/SparkPost/php-sparkpost
Also, for more "real-time" questions and answers you can join the community Slack here: http://slack.sparkpost.com/ Once you are in check out the #php channel.
If you want to get familiar with the API you can try out the PostMan resources. Here is a good blog post to get you going: https://www.sparkpost.com/blog/how-to-run-sparkpost-postman/ Once you have that going PostMan can produce code in most common languages to help you get going quickly.
Upvotes: 1
Reputation: 6836
$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);
More info: Docs
Upvotes: 0