2013-08-08 03:22:19 +04:00
|
|
|
<?PHP
|
|
|
|
|
|
|
|
namespace Mailgun;
|
|
|
|
|
2014-05-13 17:52:39 +04:00
|
|
|
require_once 'Constants/Constants.php';
|
2013-08-08 04:41:14 +04:00
|
|
|
|
|
|
|
use Mailgun\Messages\Messages;
|
2014-05-13 17:52:39 +04:00
|
|
|
use Mailgun\Messages\Exceptions;
|
2013-08-13 23:26:34 +04:00
|
|
|
use Mailgun\Connection\RestClient;
|
2013-08-08 04:41:14 +04:00
|
|
|
use Mailgun\Messages\BatchMessage;
|
2013-08-16 22:20:01 +04:00
|
|
|
use Mailgun\Lists\OptInHandler;
|
2013-08-08 04:41:14 +04:00
|
|
|
use Mailgun\Messages\MessageBuilder;
|
2013-08-08 03:22:19 +04:00
|
|
|
|
2014-10-07 02:53:33 +04:00
|
|
|
/*
|
|
|
|
This class is the base class for the Mailgun SDK.
|
|
|
|
See the official documentation for usage instructions.
|
2013-08-13 23:26:34 +04:00
|
|
|
*/
|
|
|
|
|
2013-08-08 03:22:19 +04:00
|
|
|
class Mailgun{
|
2014-05-13 19:07:44 +04:00
|
|
|
|
2013-08-08 03:22:19 +04:00
|
|
|
protected $workingDomain;
|
|
|
|
protected $restClient;
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-11-30 23:47:03 +04:00
|
|
|
public function __construct($apiKey = null, $apiEndpoint = "api.mailgun.net", $apiVersion = "v2", $ssl = true){
|
|
|
|
$this->restClient = new RestClient($apiKey, $apiEndpoint, $apiVersion, $ssl);
|
2013-08-08 03:22:19 +04:00
|
|
|
}
|
2013-08-08 04:41:14 +04:00
|
|
|
|
2013-08-13 23:26:34 +04:00
|
|
|
public function sendMessage($workingDomain, $postData, $postFiles = array()){
|
2014-10-07 02:53:33 +04:00
|
|
|
|
|
|
|
/*
|
2013-08-13 23:26:34 +04:00
|
|
|
This function allows the sending of a fully formed message OR a custom
|
2014-10-07 02:53:33 +04:00
|
|
|
MIME string. If sending MIME, the string must be passed in to the 3rd
|
|
|
|
position of the function call.
|
2013-08-13 23:26:34 +04:00
|
|
|
*/
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-13 23:26:34 +04:00
|
|
|
if(is_array($postFiles)){
|
2014-10-07 02:53:33 +04:00
|
|
|
return $this->post("$workingDomain/messages", $postData, $postFiles);
|
2013-08-13 23:26:34 +04:00
|
|
|
}
|
|
|
|
else if(is_string($postFiles)){
|
2014-05-13 17:58:12 +04:00
|
|
|
|
|
|
|
$tempFile = tempnam(sys_get_temp_dir(), "MG_TMP_MIME");
|
|
|
|
$fileHandle = fopen($tempFile, "w");
|
|
|
|
fwrite($fileHandle, $postFiles);
|
|
|
|
|
2013-08-13 23:26:34 +04:00
|
|
|
$result = $this->post("$workingDomain/messages.mime", $postData, array("message" => $tempFile));
|
2014-05-13 19:07:44 +04:00
|
|
|
fclose($fileHandle);
|
|
|
|
unlink($tempFile);
|
2013-08-13 23:26:34 +04:00
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
else{
|
2014-05-13 19:07:44 +04:00
|
|
|
throw new Exceptions\MissingRequiredMIMEParameters(EXCEPTION_MISSING_REQUIRED_MIME_PARAMETERS);
|
2013-08-13 23:26:34 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-08-08 04:41:14 +04:00
|
|
|
public function post($endpointUrl, $postData = array(), $files = array()){
|
2013-08-13 23:26:34 +04:00
|
|
|
return $this->restClient->post($endpointUrl, $postData, $files);
|
2013-08-08 04:41:14 +04:00
|
|
|
}
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-08 04:41:14 +04:00
|
|
|
public function get($endpointUrl, $queryString = array()){
|
2013-08-13 23:26:34 +04:00
|
|
|
return $this->restClient->get($endpointUrl, $queryString);
|
2013-08-08 04:41:14 +04:00
|
|
|
}
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-08 04:41:14 +04:00
|
|
|
public function delete($endpointUrl){
|
2013-08-13 23:26:34 +04:00
|
|
|
return $this->restClient->delete($endpointUrl);
|
2013-08-08 04:41:14 +04:00
|
|
|
}
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-08 04:41:14 +04:00
|
|
|
public function put($endpointUrl, $putData){
|
2013-08-13 23:26:34 +04:00
|
|
|
return $this->restClient->put($endpointUrl, $putData);
|
2013-08-08 04:41:14 +04:00
|
|
|
}
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-08 04:41:14 +04:00
|
|
|
public function MessageBuilder(){
|
|
|
|
return new MessageBuilder();
|
|
|
|
}
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-16 22:20:01 +04:00
|
|
|
public function OptInHandler(){
|
|
|
|
return new OptInHandler();
|
|
|
|
}
|
2014-10-07 02:53:33 +04:00
|
|
|
|
2013-08-08 21:39:44 +04:00
|
|
|
public function BatchMessage($workingDomain, $autoSend = true){
|
|
|
|
return new BatchMessage($this->restClient, $workingDomain, $autoSend);
|
2013-08-08 04:41:14 +04:00
|
|
|
}
|
2013-08-08 03:22:19 +04:00
|
|
|
}
|