2013-07-18 18:09:13 -07:00
|
|
|
<?PHP
|
|
|
|
|
|
|
|
//Message.php - Getters and setters for sending a message.
|
|
|
|
|
|
|
|
namespace Mailgun\Common;
|
|
|
|
|
|
|
|
require_once 'Globals.php';
|
|
|
|
|
|
|
|
use Guzzle\Http\Client as Guzzler;
|
|
|
|
use Mailgun\Exceptions\NoDomainsConfigured;
|
|
|
|
use Mailgun\Exceptions\HTTPError;
|
|
|
|
|
|
|
|
class Message{
|
|
|
|
|
2013-07-19 17:00:07 -07:00
|
|
|
private $message;
|
|
|
|
private $sanitized;
|
|
|
|
private $toRecipientCount;
|
|
|
|
private $ccRecipientCount;
|
|
|
|
private $bccRecipientCount;
|
|
|
|
private $attachmentCount;
|
|
|
|
private $campaignIdCount;
|
|
|
|
private $customOptionCount;
|
2013-07-18 18:09:13 -07:00
|
|
|
|
2013-07-19 17:00:07 -07:00
|
|
|
public function __construct($message = null){
|
2013-07-18 18:09:13 -07:00
|
|
|
|
2013-07-19 17:00:07 -07:00
|
|
|
$this->message = array();
|
|
|
|
$this->toRecipientCount = 0;
|
|
|
|
$this->ccRecipientCount = 0;
|
|
|
|
$this->bccRecipientCount = 0;
|
|
|
|
$this->attachmentCount = 0;
|
|
|
|
$this->campaignIdCount = 0;
|
|
|
|
$this->customOptionCount = 0;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public function addToRecipient($address, $name = NULL){
|
|
|
|
if($name != NULL){
|
|
|
|
$addr = $name . " <" . $address . ">";
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$addr = $address . " <" . $address . ">";
|
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$arr = "to[".$this->toRecipientCount."]";
|
|
|
|
$this->message[$arr] = $addr;
|
|
|
|
$this->toRecipientCount++;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
public function addCcRecipient($address, $name = NULL){
|
|
|
|
if($name != NULL){
|
|
|
|
$addr = $name . " <" . $address . ">";
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$addr = $address . " <" . $address . ">";
|
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$arr = "cc[".$this->ccRecipientCount."]";
|
|
|
|
$this->message[$arr] = $addr;
|
|
|
|
$this->ccRecipientCount++;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
|
|
|
|
}
|
|
|
|
public function addBccRecipient($address, $name = NULL){
|
|
|
|
if($name != NULL){
|
|
|
|
$addr = $name . " <" . $address . ">";
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$addr = $address . " <" . $address . ">";
|
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$arr = "bcc[".$this->bccRecipientCount."]";
|
|
|
|
$this->message[$arr] = $addr;
|
|
|
|
$this->bccRecipientCount++;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
public function setFromAddress($address, $name = NULL){
|
|
|
|
if($name != NULL){
|
2013-07-19 17:00:07 -07:00
|
|
|
$addr = $name . " <" . $address . ">";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
else{
|
2013-07-19 17:00:07 -07:00
|
|
|
$addr = $address . " <" . $address . ">";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$this->message['from'] = $addr;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
public function setSubject($data = NULL){
|
2013-07-19 17:00:07 -07:00
|
|
|
if($data == NULL || $data == ""){
|
|
|
|
$data = " ";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$this->message['subject'] = $data;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
public function addCustomHeader($headerName, $data){
|
|
|
|
if(!preg_match("/^h:/i", $headerName)){
|
|
|
|
$headerName = "h:" . $headerName;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
|
|
|
|
$this->addCustomOption($headerName, $data);
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
//Content
|
|
|
|
public function setTextBody($data){
|
2013-07-19 17:00:07 -07:00
|
|
|
if($data == NULL || $data == ""){
|
|
|
|
$data = " ";
|
|
|
|
}
|
|
|
|
$this->message['text'] = $data;
|
2013-07-18 18:09:13 -07:00
|
|
|
return true;
|
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
public function setHtmlBody($data){
|
|
|
|
if($data == NULL || $data == ""){
|
|
|
|
$data = " ";
|
|
|
|
}
|
|
|
|
$this->message['html'] = $data;
|
2013-07-18 18:09:13 -07:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
public function addAttachment($data){
|
2013-07-19 17:00:07 -07:00
|
|
|
$arr = "attachment[".$this->attachmentCount."]";
|
|
|
|
$this->message[$arr] = $data;
|
|
|
|
$this->attachmentCount++;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
public function addInlineImage($data){
|
|
|
|
if(isset($this->message['inline'])){
|
|
|
|
array_push($this->message['inline'] , $data);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$this->message['inline'] = array($data);
|
|
|
|
return true;
|
|
|
|
}
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
//Options
|
|
|
|
public function setTestMode($data){
|
2013-07-19 17:00:07 -07:00
|
|
|
if(filter_var($data, FILTER_VALIDATE_BOOLEAN)){
|
|
|
|
$data = "yes";
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$data = "no";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$this->message['o:testmode'] = $data;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
public function addCampaignId($data){
|
|
|
|
if($this->campaignIdCount < 3){
|
|
|
|
$arr = "o:campaign[".$this->campaignIdCount."]";
|
|
|
|
$this->message[$arr] = $data;
|
|
|
|
$this->campaignIdCount++;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
public function setDkim($data){
|
|
|
|
if(filter_var($data, FILTER_VALIDATE_BOOLEAN)){
|
|
|
|
$data = "yes";
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$data = "no";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$this->message["o:dkim"] = $data;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
public function setOpenTracking($data){
|
2013-07-19 17:00:07 -07:00
|
|
|
if(filter_var($data, FILTER_VALIDATE_BOOLEAN)){
|
|
|
|
$data = "yes";
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$data = "no";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
$this->message['o:tracking-opens'] = $data;
|
|
|
|
return true;
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
public function setClickTracking($data){
|
2013-07-19 17:00:07 -07:00
|
|
|
if(filter_var($data, FILTER_VALIDATE_BOOLEAN)){
|
|
|
|
$data = "yes";
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
else{
|
|
|
|
$data = "no";
|
|
|
|
}
|
|
|
|
$this->message['o:tracking-clicks'] = $data;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setDeliveryTime($data){
|
|
|
|
//BLAH
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
//Handlers for any new features not defined as a concrete function.
|
|
|
|
public function addCustomData(){}
|
|
|
|
|
2013-07-19 17:00:07 -07:00
|
|
|
public function addCustomOption($optionName, $data){
|
|
|
|
if(isset($this->message['options'][$optionName])){
|
|
|
|
array_push($this->message['options'][$optionName], $data);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
$this->message['options'][$optionName] = array($data);
|
|
|
|
return true;
|
|
|
|
}
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
2013-07-19 17:00:07 -07:00
|
|
|
|
|
|
|
public function getMessage(){
|
|
|
|
|
|
|
|
return $this->message;
|
|
|
|
}
|
2013-07-18 18:09:13 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
?>
|