Blame | Last modification | View Log | RSS feed
<?php
/**
* This helper builds the request body for a /mail/send API call.
*
* PHP version 5.3
*
* @author Elmer Thomas <dx@sendgrid.com>
* @copyright 2016 SendGrid
* @license https://opensource.org/licenses/MIT The MIT License
* @version GIT: <git_id>
* @link http://packagist.org/packages/sendgrid/sendgrid
*/
namespace SendGrid;
class ReplyTo implements \JsonSerializable
{
private $email;
public function __construct($email)
{
$this->email = $email;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getEmail()
{
return $this->email;
}
public function jsonSerialize()
{
return array_filter(
[
'email' => $this->getEmail()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class ClickTracking implements \JsonSerializable
{
private $enable;
private $enable_text;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setEnableText($enable_text)
{
$this->enable_text = $enable_text;
}
public function getEnableText()
{
return $this->enable_text;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'enable_text' => $this->getEnableText()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class OpenTracking implements \JsonSerializable
{
private $enable;
private $substitution_tag;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setSubstitutionTag($substitution_tag)
{
$this->substitution_tag = $substitution_tag;
}
public function getSubstitutionTag()
{
return $this->substitution_tag;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'substitution_tag' => $this->getSubstitutionTag()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class SubscriptionTracking implements \JsonSerializable
{
private $enable;
private $text;
private $html;
private $substitution_tag;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setText($text)
{
$this->text = $text;
}
public function getText()
{
return $this->text;
}
public function setHtml($html)
{
$this->html = $html;
}
public function getHtml()
{
return $this->html;
}
public function setSubstitutionTag($substitution_tag)
{
$this->substitution_tag = $substitution_tag;
}
public function getSubstitutionTag()
{
return $this->substitution_tag;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'text' => $this->getText(),
'html' => $this->getHtml(),
'substitution_tag' => $this->getSubstitutionTag()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class Ganalytics implements \JsonSerializable
{
private $enable;
private $utm_source;
private $utm_medium;
private $utm_term;
private $utm_content;
private $utm_campaign;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setCampaignSource($utm_source)
{
$this->utm_source = $utm_source;
}
public function getCampaignSource()
{
return $this->utm_source;
}
public function setCampaignMedium($utm_medium)
{
$this->utm_medium = $utm_medium;
}
public function getCampaignMedium()
{
return $this->utm_medium;
}
public function setCampaignTerm($utm_term)
{
$this->utm_term = $utm_term;
}
public function getCampaignTerm()
{
return $this->utm_term;
}
public function setCampaignContent($utm_content)
{
$this->utm_content = $utm_content;
}
public function getCampaignContent()
{
return $this->utm_content;
}
public function setCampaignName($utm_campaign)
{
$this->utm_campaign = $utm_campaign;
}
public function getCampaignName()
{
return $this->utm_campaign;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'utm_source' => $this->getCampaignSource(),
'utm_medium' => $this->getCampaignMedium(),
'utm_term' => $this->getCampaignTerm(),
'utm_content' => $this->getCampaignContent(),
'utm_campaign' => $this->getCampaignName()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class TrackingSettings implements \JsonSerializable
{
private $click_tracking;
private $open_tracking;
private $subscription_tracking;
private $ganalytics;
public function setClickTracking($click_tracking)
{
$this->click_tracking = $click_tracking;
}
public function getClickTracking()
{
return $this->click_tracking;
}
public function setOpenTracking($open_tracking)
{
$this->open_tracking = $open_tracking;
}
public function getOpenTracking()
{
return $this->open_tracking;
}
public function setSubscriptionTracking($subscription_tracking)
{
$this->subscription_tracking = $subscription_tracking;
}
public function getSubscriptionTracking()
{
return $this->subscription_tracking;
}
public function setGanalytics($ganalytics)
{
$this->ganalytics = $ganalytics;
}
public function getGanalytics()
{
return $this->ganalytics;
}
public function jsonSerialize()
{
return array_filter(
[
'click_tracking' => $this->getClickTracking(),
'open_tracking' => $this->getOpenTracking(),
'subscription_tracking' => $this->getSubscriptionTracking(),
'ganalytics' => $this->getGanalytics()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class BccSettings implements \JsonSerializable
{
private $enable;
private $email;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getEmail()
{
return $this->email;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'email' => $this->getEmail()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class BypassListManagement implements \JsonSerializable
{
private $enable;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class Footer implements \JsonSerializable
{
private $enable;
private $text;
private $html;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setText($text)
{
$this->text = $text;
}
public function getText()
{
return $this->text;
}
public function setHtml($html)
{
$this->html = $html;
}
public function getHtml()
{
return $this->html;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'text' => $this->getText(),
'html' => $this->getHtml()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class SandBoxMode implements \JsonSerializable
{
private $enable;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class SpamCheck implements \JsonSerializable
{
private $enable;
private $threshold;
private $post_to_url;
public function setEnable($enable)
{
$this->enable = $enable;
}
public function getEnable()
{
return $this->enable;
}
public function setThreshold($threshold)
{
$this->threshold = $threshold;
}
public function getThreshold()
{
return $this->threshold;
}
public function setPostToUrl($post_to_url)
{
$this->post_to_url = $post_to_url;
}
public function getPostToUrl()
{
return $this->post_to_url;
}
public function jsonSerialize()
{
return array_filter(
[
'enable' => $this->getEnable(),
'threshold' => $this->getThreshold(),
'post_to_url' => $this->getPostToUrl()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class MailSettings implements \JsonSerializable
{
private $bcc;
private $bypass_list_management;
private $footer;
private $sandbox_mode;
private $spam_check;
public function setBccSettings($bcc)
{
$this->bcc = $bcc;
}
public function getBccSettings()
{
return $this->bcc;
}
public function setBypassListManagement($bypass_list_management)
{
$this->bypass_list_management = $bypass_list_management;
}
public function getBypassListManagement()
{
return $this->bypass_list_management;
}
public function setFooter($footer)
{
$this->footer = $footer;
}
public function getFooter()
{
return $this->footer;
}
public function setSandboxMode($sandbox_mode)
{
$this->sandbox_mode = $sandbox_mode;
}
public function getSandboxMode()
{
return $this->sandbox_mode;
}
public function setSpamCheck($spam_check)
{
$this->spam_check = $spam_check;
}
public function getSpamCheck()
{
return $this->spam_check;
}
public function jsonSerialize()
{
return array_filter(
[
'bcc' => $this->getBccSettings(),
'bypass_list_management' => $this->getBypassListManagement(),
'footer' => $this->getFooter(),
'sandbox_mode' => $this->getSandboxMode(),
'spam_check' => $this->getSpamCheck()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class ASM implements \JsonSerializable
{
private $group_id;
private $groups_to_display;
public function setGroupId($group_id)
{
$this->group_id = $group_id;
}
public function getGroupId()
{
return $this->group_id;
}
public function setGroupsToDisplay($group_ids)
{
$this->groups_to_display = $group_ids;
}
public function getGroupsToDisplay()
{
return $this->groups_to_display;
}
public function jsonSerialize()
{
return array_filter(
[
'group_id' => $this->getGroupId(),
'groups_to_display' => $this->getGroupsToDisplay()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class Attachment implements \JsonSerializable
{
private $content;
private $type;
private $filename;
private $disposition;
private $content_id;
public function setContent($content)
{
$this->content = $content;
}
public function getContent()
{
return $this->content;
}
public function setType($type)
{
$this->type = $type;
}
public function getType()
{
return $this->type;
}
public function setFilename($filename)
{
$this->filename = $filename;
}
public function getFilename()
{
return $this->filename;
}
public function setDisposition($disposition)
{
$this->disposition = $disposition;
}
public function getDisposition()
{
return $this->disposition;
}
public function setContentID($content_id)
{
$this->content_id = $content_id;
}
public function getContentID()
{
return $this->content_id;
}
public function jsonSerialize()
{
return array_filter(
[
'content' => $this->getContent(),
'type' => $this->getType(),
'filename' => $this->getFilename(),
'disposition' => $this->getDisposition(),
'content_id' => $this->getContentID()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class Content implements \JsonSerializable
{
private $type;
private $value;
public function __construct($type, $value)
{
$this->type = $type;
$this->value = mb_convert_encoding($value, 'UTF-8', 'UTF-8');
}
public function setType($type)
{
$this->type = $type;
}
public function getType()
{
return $this->type;
}
public function setValue($value)
{
$this->value = mb_convert_encoding($value, 'UTF-8', 'UTF-8');
}
public function getValue()
{
return $this->value;
}
public function jsonSerialize()
{
return array_filter(
[
'type' => $this->getType(),
'value' => $this->getValue()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class Personalization implements \JsonSerializable
{
private $tos;
private $ccs;
private $bccs;
private $subject;
private $headers;
private $substitutions;
private $custom_args;
private $send_at;
public function addTo($email)
{
$this->tos[] = $email;
}
public function getTos()
{
return $this->tos;
}
public function addCc($email)
{
$this->ccs[] = $email;
}
public function getCcs()
{
return $this->ccs;
}
public function addBcc($email)
{
$this->bccs[] = $email;
}
public function getBccs()
{
return $this->bccs;
}
public function setSubject($subject)
{
$this->subject = mb_convert_encoding($subject, 'UTF-8', 'UTF-8');
}
public function getSubject()
{
return $this->subject;
}
public function addHeader($key, $value)
{
$this->headers[$key] = $value;
}
public function getHeaders()
{
return $this->headers;
}
public function addSubstitution($key, $value)
{
$this->substitutions[$key] = $value;
}
public function getSubstitutions()
{
return $this->substitutions;
}
public function addCustomArg($key, $value)
{
$this->custom_args[$key] = (string)$value;
}
public function getCustomArgs()
{
return $this->custom_args;
}
public function setSendAt($send_at)
{
$this->send_at = $send_at;
}
public function getSendAt()
{
return $this->send_at;
}
public function jsonSerialize()
{
return array_filter(
[
'to' => $this->getTos(),
'cc' => $this->getCcs(),
'bcc' => $this->getBccs(),
'subject' => $this->subject,
'headers' => $this->getHeaders(),
'substitutions' => $this->getSubstitutions(),
'custom_args' => $this->getCustomArgs(),
'send_at' => $this->getSendAt()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
class Email implements \JsonSerializable
{
private $name;
private $email;
public function __construct($name, $email)
{
$this->name = $name;
$this->email = $email;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getEmail()
{
return $this->email;
}
public function jsonSerialize()
{
return array_filter(
[
'name' => $this->getName(),
'email' => $this->getEmail()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}
/**
* The final request body object
*/
class Mail implements \JsonSerializable
{
const VERSION = '1.0.0';
protected $namespace = 'SendGrid';
public $from;
public $personalization;
public $subject;
public $contents;
public $attachments;
public $template_id;
public $sections;
public $headers;
public $categories;
public $custom_args;
public $send_at;
public $batch_id;
public $asm;
public $ip_pool_name;
public $mail_settings;
public $tracking_settings;
public $reply_to;
public function __construct($from = null, $subject = null, $to = null, $content = null)
{
if (!empty($from) && !empty($subject) && !empty($to) && !empty($content)) {
$this->setFrom($from);
$personalization = new Personalization();
$personalization->addTo($to);
$this->addPersonalization($personalization);
$this->setSubject($subject);
$this->addContent($content);
}
}
public function setFrom($email)
{
$this->from = $email;
}
public function getFrom()
{
return $this->from;
}
public function addPersonalization($personalization)
{
$this->personalization[] = $personalization;
}
public function getPersonalizations()
{
return $this->personalization;
}
public function setSubject($subject)
{
$this->subject = $subject;
}
public function getSubject()
{
return $this->subject;
}
public function addContent($content)
{
$this->contents[] = $content;
}
public function getContents()
{
return $this->contents;
}
public function addAttachment($attachment)
{
$this->attachments[] = $attachment;
}
public function getAttachments()
{
return $this->attachments;
}
public function setTemplateId($template_id)
{
$this->template_id = $template_id;
}
public function getTemplateId()
{
return $this->template_id;
}
public function addSection($key, $value)
{
$this->sections[$key] = $value;
}
public function getSections()
{
return $this->sections;
}
public function addHeader($key, $value)
{
$this->headers[$key] = $value;
}
public function getHeaders()
{
return $this->headers;
}
public function addCategory($category)
{
$this->categories[] = $category;
}
public function getCategories()
{
return $this->categories;
}
public function addCustomArg($key, $value)
{
$this->custom_args[$key] = (string)$value;
}
public function getCustomArgs()
{
return $this->custom_args;
}
public function setSendAt($send_at)
{
$this->send_at = $send_at;
}
public function getSendAt()
{
return $this->send_at;
}
public function setBatchId($batch_id)
{
$this->batch_id = $batch_id;
}
public function getBatchId()
{
return $this->batch_id;
}
public function setASM($asm)
{
$this->asm = $asm;
}
public function getASM()
{
return $this->asm;
}
public function setIpPoolName($ip_pool_name)
{
$this->ip_pool_name = $ip_pool_name;
}
public function getIpPoolName()
{
return $this->ip_pool_name;
}
public function setMailSettings($mail_settings)
{
$this->mail_settings = $mail_settings;
}
public function getMailSettings()
{
return $this->mail_settings;
}
public function setTrackingSettings($tracking_settings)
{
$this->tracking_settings = $tracking_settings;
}
public function getTrackingSettings()
{
return $this->tracking_settings;
}
public function setReplyTo($reply_to)
{
$this->reply_to = $reply_to;
}
public function getReplyTo()
{
return $this->reply_to;
}
public function jsonSerialize()
{
return array_filter(
[
'from' => $this->getFrom(),
'personalizations' => $this->getPersonalizations(),
'subject' => $this->getSubject(),
'content' => $this->getContents(),
'attachments' => $this->getAttachments(),
'template_id' => $this->getTemplateId(),
'sections' => $this->getSections(),
'headers' => $this->getHeaders(),
'categories' => $this->getCategories(),
'custom_args' => $this->getCustomArgs(),
'send_at' => $this->getSendAt(),
'batch_id' => $this->getBatchId(),
'asm' => $this->getASM(),
'ip_pool_name' => $this->getIpPoolName(),
'mail_settings' => $this->getMailSettings(),
'tracking_settings' => $this->getTrackingSettings(),
'reply_to' => $this->getReplyTo()
],
function ($value) {
return $value !== null;
}
) ?: null;
}
}