SendWithUs PHP Client
Note: This fork is maintained for PSR2 compliance and proper composer compatibility.
curl library must be installed and enabled in php.ini
Add it to your composer.json
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/dbtlr/sendwithus_php"
}
],
"require": {
"sendwithus/api": "dev-master"
}
}
Then install it with
composer install
require_once 'vendor/autoload.php';
$apiKey = 'THIS_IS_A_TEST_API_KEY';
$options = array(
'debugMode' => true
);
$api = new \SendWithUs\Api\Client($apiKey, $options);
$response = $api->emails();
$response = $api->getTemplate($template_id, //string id of template
$version_id //optional string version id of template
);
We validate all HTML content
$response = $api->createEmail('Email Name', // string email name
'Email Subject', // string subject line of email
'<html><head></head><body>Valid HTML<body></html>', // string of HTML code for email
'Optional text content') // optional string of text for email
We validate all HTML content
$response = $api->createNewTemplateVersion(
'Email Name', // string email version name
'Email Subject', // string subject of email
'tem_JAksjdjwJXUVwnemljflksEJks', // string id of email used
'<html><head></head><body>Valid HTML<body></html>', // string block of HTML code used for email
'Optional text content') // optional string of text used for email
We validate all HTML content
$response = $api->updateTemplateVersion(
'Email Name', // string email version name
'Email Subject', // string subject of email
'tem_JAkCjdjwJXUVwnemljflksEJks', // string id of email being updated
'ver_iuweJskj4Jwkj2ndclk4jJDken', // string version of email being updated
'<html><head></head><body>Valid HTML<body></html>', // string block of HTML code used for email
'Optional text content') // optional string of text used for email
// Send function header
send(
$email_id, // string, id of email to send
$recipient, // associative array, ("address" => "ckent@dailyplanet.com", "name" => "Clark") to send to
$args // (optional) array, (array) additional parameters - (see below)
)
// Send function options
'email_data' // array of variables to merge into the template.
'sender' // array ("address", "name", "reply_to") of sender.
'cc' // array of ("address", "name") for carbon copy.
'bcc' // array of ("address", "name") for blind carbon copy.
'inline' // string, path to file to include inline.
'files' // array, paths to files to attach to the send.
'tags' // array of strings to tag email send with.
'esp_account' // string of ESP ID to manually select ESP
$response = $api->send('email_id',
array('address' => 'us@sendwithus.com')
);
$response = $api->send('email_id',
array(
'name' => 'Matt',
'address' => 'us@sendwithus.com'),
array(
'email_data' => array('name' => 'Jimmy the snake'),
'sender' => array(
'name' => 'Company',
'address' => 'company@company.com',
'reply_to' => 'info@company.com'
)
'esp_account' => 'esp_EMpi5eo59cG4cCWd7AdW7J'
)
);
$response = $api->send('email_id',
array(
'name' => 'Matt',
'address' => 'us@sendwithus.com'),
array(
'email_data' => array('name' => 'Jimmy the snake'),
'sender' => array(
'name' => 'Company',
'address' => 'company@company.com',
'reply_to' => 'info@company.com'
),
'cc' => array(
array(
'name' => 'CC Name',
'address' => 'CC@company.com'
),
array(
'name' => 'CC 2 Name',
'address' => 'CC2@company.com'
)
),
'bcc' => array(
array(
'name' => 'BCC Name',
'address' => 'BCC@company.com'
)
)
)
);
$response = $api->send('email_id',
array(
'name' => 'Matt',
'address' => 'us@sendwithus.com'),
array(
'tags' => array('Production', 'Client1')
)
);
$response = $api->send('email_id',
array(
'name' => 'Matt',
'address' => 'us@sendwithus.com'),
array(
'version_name' => 'My Version'
)
);
$response = $api->send('email_id',
array(
'name' => 'Matt',
'address' => 'us@sendwithus.com'),
array(
'inline' => 'filename.jpg'
)
);
$response = $api->send('email_id',
array(
'name' => 'Matt',
'address' => 'us@sendwithus.com'),
array(
'files' => array(
'filename.txt',
'filename.pdf'
)
)
);
$response = $api->sendSegment(
$email_id, // id of template to send
$segment_id, // id of the segment to send to
$data // optional array of data to send
)
Example
$response = $api->sendSegment(tem_123jeDI23, 'seg_0biVV4Ncf1234');
$response = $api->getLog(
$log_id // id of log to retrieve
)
Example
$response = $response = $api->getLog('log_d4R7hV4d0r')
Response
(
[email_id] => tem_1jeid84bg
[recipient_name] =>
[message] => Mandrill: Message has been successfully delivered to the receiving server.
[id] => log_d4R7hV4d0r
[object] => log
[created] => 1409287597
[email_name] => test
[recipient_address] => person@example.com
[status] => sent
[email_version] => Original Version
)
// Unsubscribe email address from active drips
$response = $api->dripUnsubscribe(
$email_address, // the email to unsubscribe from active drips
)
$response = $api->dripUnsubscribe('us@sendwithus.com');
List all drip campaigns for the current profile
Example
$response = $api->listDripCampaigns();
Response
Array
(
[0] => stdClass Object
(
[drip_steps] => Array
(
[0] => stdClass Object
(
[id] => dcs_1234abcd1234
[object] => drip_step
[delay_seconds] => 0
[email_id] => tem_1234abcd1234
)
)
[name] => Drip Campaign
[enabled] => 1
[id] => dc_1234abcd1234
[trigger_email_id] => tem_1234abcd1234
[object] => drip_campaign
)
)
Starts a customer on the first step of a specified drip campaign
$response = $api->startOnDripCampaign(
$recipient_address, // string, email address being added to drip campaign
$drip_campaign_id, // string, drip campaign being added to
$data // array, (optional) email data being added to drip campaign
$args // array, (optional) additional options being sent with email (tags, cc's, etc)
);
// Args options
'sender' // array ("address", "name", "reply_to") of sender.
'cc' // array of ("address", "name") for carbon copy.
'bcc' // array of ("address", "name") for blind carbon copy.
'tags' // array of strings to tag email send with.
'esp_account' // string of ESP ID to manually select ESP
Example
$email_data = array(
'name' => 'Jean-Luc'
'rank' => 'Captain'
);
$args = array(
'tags' => array('all', 'the', 'tags'),
'cc' => array('address' => 'them@sendwithus.com')
);
$response = $api->startOnDripCampaign('us@sendwithus.com', 'dc_1234abcd1234', $email_data, $args);
Response
stdClass Object
(
[success] => 1
[drip_campaign] => stdClass Object
(
[id] => dc_1234abcd1234
[name] => Drip Campaign
)
[message] => Recipient successfully added to drip campaign.
[status] => OK
[recipient_address] => us@sendwithus.com
)
Deactivates all pending emails for a customer on a specified drip campaign
$response = $api->remove_from_drip_campaign(
$recipient_address, // string, email address being removed from drip campaign
$drip_campaign_id // string, drip campaign being removed from
);
Example
$response = $api->removeFromDripCampaign('us@sendwithus.com', 'dc_1234abcd1234');
Response
stdClass Object
(
[success] => 1
[drip_campaign] => stdClass Object
(
[id] => dc_1234abcd1234
[name] => Drip Campaign
)
[message] => Recipient successfully removed from drip campaign.
[status] => OK
[recipient_address] => us@sendwithus.com
)
Show all the steps and other information in a specified campaign
$response = $api->dripCampaignDetails(
$drip_campaign_id // string, drip campaign to list details from
);
Example
$response = $api->dripCampaignDetails('dc_1234abcd1234');
Response
stdClass Object
(
[drip_steps] => Array
(
[0] => stdClass Object
(
[id] => dcs_1234abcd1234
[object] => drip_step
[delay_seconds] => 0
[email_id] => tem_1234abcd1234
)
)
[name] => Drip Campaign
[enabled] => 1
[id] => dc_1234abcd1234
[trigger_email_id] => tem_1234abcd1234
[object] => drip_campaign
)
$response = $api->createCustomer(
$email, // string, email of customer
$data, // array, optional, data for customer
)
Example
$response = $api->createCustomer('us@sendwithus.com',
array('name' => 'Sendwithus')
);
$response = $api->updateCustomer(
$email, // string, email of customer
$data, // array, optional, data for customer
)
Example
$response = $api->updateCustomer('us@sendwithus.com',
array('name' => 'Sendwithus.com')
);
$response = $api->deleteCustomer(
$email, // string, email of customer
)
Example
$response = $api->deleteCustomer('us@sendwithus.com');
print $response->success; // true
print $response->status; // "OK"
print $response->receipt_id; // ### numeric receipt_id you can use to query email status later
print $response->success; // false
print $response->status; // "error"
print $response->exception; // Exception Object
print $response->code;
// 400 (malformed request)
// 403 (bad api key)
Make sure to have phpunit installed (http://phpunit.de/) and run the following from the root directory
phpunit --configuration travisci-phpunit.xml
- Add logger support.