⚠️ This is a fork of the official SDK Unisender Go:
Original: https://gitflic.ru/project/unisender/unigo-php
License: MIT
This SDK contains methods for easily interacting with the Unisender Go API: https://godocs.unisender.ru/web-api-ref#web-api
Use Composer to install the package:
composer require denis-guselnikov/unigo-php $client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
// Example for GO1 server.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'go1.unisender.ru');
$recipients = [
[
"email" => 'john@example.com',
"substitutions" => [
"to_name" => "John Smith"
],
],
[
"email" => 'liza@example.com',
"substitutions" => [
"to_name" => "Liza Frank"
],
]
];
$body = [
"html" => "<b>Test mail, {{to_name}}</b>",
"plaintext" => "Hello, {{to_name}}",
"amp" => "<!doctype html><html amp4email><head> <meta charset=\"utf-8\"><script async src=\"https://cdn.ampproject.org/v0.js\"></script> <style amp4email-boilerplate>body[visibility:hidden]</style></head><body> Hello, AMP4EMAIL world.</body></html>"
];
// You can use email object can be used to prepare the message array.
// But the email send method accepts an array, that can be composed without
// SDK utils.
$mail = new Unisender\Model\Email($recipients, $body);
$mail->setFromEmail('user@example.com');
$mail->setSubject('test letter');
$response = $client->emails()->send($mail->toArray());See API documentation for more details.
See template engine documentation for substitutions details.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$params = [
"from_email" => "john@example.com",
"from_name" => "John Smith",
"to_email" => "user@example.com"
];
$response = $client->emails()->subscribe($params);API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$params = [
"template" => [
"name" => "First template",
"body" => [
"html" => "<b>Hello, {{to_name}}</b>",
"plaintext" => "Hello, {{to_name}}",
"amp" => "<!doctype html><html amp4email><head> <meta charset=\"utf-8\"><script async src=\"https://cdn.ampproject.org/v0.js\"></script> <style amp4email-boilerplate>body[visibility:hidden]</style></head><body> Hello, AMP4EMAIL world.</body></html>"
],
"subject" => "Test template mail",
"from_email" => "test@example.com",
"from_name" => "Example From",
]
];
$response = $client->templates()->set($params);API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$response = $client->templates()->get('YOUR-TEMPLATE-ID');API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$params = [
"limit" => 50,
"offset" => 0
];
$response = $client->templates()->list($params);API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$response = $client->templates()->delete('YOUR-TEMPLATE-ID');API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$params = [
"url" => "https://yourhost.example.com/unigo-webhook",
"events" => [
"email_status" => [
"delivered",
"opened",
"clicked",
"unsubscribed",
"soft_bounced",
"hard_bounced",
"spam"
]
]
];
$response = $client->webhooks()->set($params);API documentation.
The specified URL will receive a request from Unisender Go. See more information about request data in API documentation.
This is how you can check the message integrity in your callback handler:
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
// $body contains a callback request body.
if ($client->webhooks()->verify($body) === TRUE) {
// The webhook is confirmed, result can be processed.
} $client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$response = $client->webhooks()->get('YOUR-WEBHOOK-URL');API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$response = $client->webhooks()->list();API documentation.
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$response = $client->webhooks()->delete('YOUR-WEBHOOK-URL');API documentation.
For API methods, that are not implemented in SDK yet, you can use UniGoClient::httpRequest().
Here is an example for "set" suppression method:
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME');
$response = $client->httpRequest('suppression/set.json', ["email" => "user@example.com", "cause" => "unsubscribed"]);Unisender Go client accepts an array with Guzzle configuration as a third argument. When creating a client, you can pass some additional options (i.e. connect_timeout) to apply this to all requests.
Here is a more advanced example of adding a history handler to save outcoming requests and responses.
$container = [];
$history = Middleware::history($container);
$handlerStack = HandlerStack::create();
$handlerStack->push($history);
$config = ['handler' => $handlerStack];
$client = new Unisender\UniGoClient('YOUR-API-KEY', 'YOUR-HOST-NAME', $config);See Guzzle documentation.