summaryrefslogtreecommitdiff
path: root/Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php')
-rw-r--r--Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php1289
1 files changed, 617 insertions, 672 deletions
diff --git a/Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php b/Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php
index 6c6451a..1557802 100644
--- a/Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php
+++ b/Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php
@@ -4,689 +4,634 @@ namespace SendGrid;
class Email
{
- public
- $to,
- $toName,
- $from,
- $fromName,
- $replyTo,
- $cc,
- $ccName,
- $bcc,
- $bccName,
- $subject,
- $text,
- $html,
- $date,
- $content,
- $headers,
- $smtpapi,
- $attachments;
-
- public function __construct()
- {
- $this->fromName = false;
- $this->replyTo = false;
- $this->smtpapi = new \Smtpapi\Header();
- }
-
- /**
- * _removeFromList
- * Given a list of key/value pairs, removes the associated keys
- * where a value matches the given string ($item)
- *
- * @param Array $list - the list of key/value pairs
- * @param String $item - the value to be removed
- */
- private function _removeFromList(&$list, $item, $key_field = null)
- {
- foreach ($list as $key => $val) {
- if ($key_field) {
- if ($val[$key_field] == $item) {
- unset($list[$key]);
- }
- } else {
- if ($val == $item) {
- unset($list[$key]);
- }
- }
- }
- //repack the indices
- $list = array_values($list);
- }
-
- public function addTo($email, $name = null)
- {
- if ($this->to == null) {
- $this->to = array();
- }
-
- if (is_array($email)) {
- foreach ($email as $e) {
- $this->to[] = $e;
- }
- } else {
- $this->to[] = $email;
- }
-
- if (is_array($name)) {
- foreach ($name as $n) {
- $this->addToName($n);
- }
- } elseif ($name) {
- $this->addToName($name);
- }
-
- return $this;
- }
-
- public function addSmtpapiTo($email, $name = null)
- {
- $this->smtpapi->addTo($email, $name);
-
- return $this;
- }
-
- public function setTos(array $emails)
- {
- $this->to = $emails;
-
- return $this;
- }
-
- public function setSmtpapiTos(array $emails)
- {
- $this->smtpapi->setTos($emails);
-
- return $this;
- }
-
- public function addToName($name)
- {
- if ($this->toName == null) {
- $this->toName = array();
- }
-
- $this->toName[] = $name;
-
- return $this;
- }
-
- public function getToNames()
- {
- return $this->toName;
- }
-
- public function setFrom($email)
- {
- $this->from = $email;
-
- return $this;
- }
-
- public function getFrom($as_array = false)
- {
- if ($as_array && ($name = $this->getFromName())) {
- return array("$this->from" => $name);
- } else {
- return $this->from;
- }
- }
-
- public function setFromName($name)
- {
- $this->fromName = $name;
-
- return $this;
- }
-
- public function getFromName()
- {
- return $this->fromName;
- }
-
- public function setReplyTo($email)
- {
- $this->replyTo = $email;
-
- return $this;
- }
-
- public function getReplyTo()
- {
- return $this->replyTo;
- }
-
- public function setCc($email)
- {
- $this->cc = array($email);
-
- return $this;
- }
-
- public function setCcs(array $email_list)
- {
- $this->cc = $email_list;
-
- return $this;
- }
-
- public function addCc($email, $name = null)
- {
- if ($this->cc == null) {
- $this->cc = array();
- }
-
- if (is_array($email)) {
- foreach ($email as $e) {
- $this->cc[] = $e;
- }
- } else {
- $this->cc[] = $email;
- }
-
- if (is_array($name)) {
- foreach ($name as $n) {
- $this->addCcName($n);
- }
- } elseif ($name) {
- $this->addCcName($name);
- }
-
- return $this;
- }
-
- public function addCcName($name)
- {
- if ($this->ccName == null) {
- $this->ccName = array();
- }
-
- $this->ccName[] = $name;
-
- return $this;
- }
-
- public function removeCc($email)
- {
- $this->_removeFromList($this->cc, $email);
-
- return $this;
- }
-
- public function getCcs()
- {
- return $this->cc;
- }
-
- public function getCcNames()
- {
- return $this->ccName;
- }
-
- public function setBcc($email)
- {
- $this->bcc = array($email);
-
- return $this;
- }
-
- public function setBccs($email_list)
- {
- $this->bcc = $email_list;
-
- return $this;
- }
-
- public function addBcc($email, $name = null)
- {
- if ($this->bcc == null) {
- $this->bcc = array();
- }
-
- if (is_array($email)) {
- foreach ($email as $e) {
- $this->bcc[] = $e;
- }
- } else {
- $this->bcc[] = $email;
- }
-
- if (is_array($name)) {
- foreach ($name as $n) {
- $this->addBccName($n);
- }
- } elseif ($name) {
- $this->addBccName($name);
- }
-
- return $this;
- }
-
- public function addBccName($name)
- {
- if ($this->bccName == null) {
- $this->bccName = array();
- }
-
- $this->bccName[] = $name;
-
- return $this;
- }
-
- public function getBccNames()
- {
- return $this->bccName;
- }
-
- public function removeBcc($email)
- {
- $this->_removeFromList($this->bcc, $email);
-
- return $this;
- }
-
- public function getBccs()
- {
- return $this->bcc;
- }
-
- public function setSubject($subject)
- {
- $this->subject = $subject;
-
- return $this;
- }
-
- public function getSubject()
- {
- return $this->subject;
- }
-
- public function setDate($date)
- {
- $this->date = $date;
-
- return $this;
- }
-
- public function getDate()
- {
- return $this->date;
- }
-
- public function setText($text)
- {
- $this->text = $text;
-
- return $this;
- }
-
- public function getText()
- {
- return $this->text;
- }
-
- public function setHtml($html)
- {
- $this->html = $html;
-
- return $this;
- }
-
- public function getHtml()
- {
- return $this->html;
- }
-
- public function setSendAt($timestamp)
- {
- $this->smtpapi->setSendAt($timestamp);
-
- return $this;
- }
-
- public function setSendEachAt(array $timestamps)
- {
- $this->smtpapi->setSendEachAt($timestamps);
-
- return $this;
- }
-
- public function addSendEachAt($timestamp)
- {
- $this->smtpapi->addSendEachAt($timestamp);
-
- return $this;
- }
-
- /**
- * Convenience method to add template
- *
- * @param string The id of the template
- *
- * @return $this
- */
- public function setTemplateId($templateId)
- {
- $this->addFilter('templates', 'enabled', 1);
- $this->addFilter('templates', 'template_id', $templateId);
-
- return $this;
- }
-
- /** Convenience method to set asm group id
- *
- * @param string the group id
- *
- * @return $this
- */
- public function setAsmGroupId($groupId)
- {
- $this->smtpapi->setASMGroupID($groupId);
-
- return $this;
- }
-
- public function setAttachments(array $files)
- {
- $this->attachments = array();
-
- foreach ($files as $filename => $file) {
- if (is_string($filename)) {
- $this->addAttachment($file, $filename);
- } else {
- $this->addAttachment($file);
- }
- }
-
- return $this;
- }
-
- public function setAttachment($file, $custom_filename = null, $cid = null)
- {
- $this->attachments = array($this->getAttachmentInfo($file, $custom_filename, $cid));
-
- return $this;
- }
-
- public function addAttachment($file, $custom_filename = null, $cid = null)
- {
- $this->attachments[] = $this->getAttachmentInfo($file, $custom_filename, $cid);
-
- return $this;
- }
-
- public function getAttachments()
- {
- return $this->attachments;
- }
-
- public function removeAttachment($file)
- {
- $this->_removeFromList($this->attachments, $file, "file");
-
- return $this;
- }
-
- private function getAttachmentInfo($file, $custom_filename = null, $cid = null)
- {
- $info = pathinfo($file);
- $info['file'] = $file;
- if (!is_null($custom_filename)) {
- $info['custom_filename'] = $custom_filename;
- }
- if ($cid !== null) {
- $info['cid'] = $cid;
- }
-
- return $info;
- }
-
- public function setCategories($categories)
- {
- $this->smtpapi->setCategories($categories);
-
- return $this;
- }
-
- public function setCategory($category)
- {
- $this->smtpapi->setCategory($category);
-
- return $this;
- }
-
- public function addCategory($category)
- {
- $this->smtpapi->addCategory($category);
-
- return $this;
- }
-
- public function removeCategory($category)
- {
- $this->smtpapi->removeCategory($category);
-
- return $this;
- }
+ public
+ $to,
+ $toName,
+ $from,
+ $fromName,
+ $replyTo,
+ $cc,
+ $ccName,
+ $bcc,
+ $bccName,
+ $subject,
+ $text,
+ $html,
+ $date,
+ $content,
+ $headers,
+ $smtpapi,
+ $attachments;
+
+ public function __construct() {
+
+ $this->fromName = false;
+ $this->replyTo = false;
+ $this->smtpapi = new \Smtpapi\Header();
+ }
+
+ /**
+ * _removeFromList
+ * Given a list of key/value pairs, removes the associated keys
+ * where a value matches the given string ($item)
+ *
+ * @param Array $list - the list of key/value pairs
+ * @param String $item - the value to be removed
+ */
+ private function _removeFromList( &$list, $item, $key_field = null ) {
+ foreach ( $list as $key => $val ) {
+ if ( $key_field ) {
+ if ( $val[ $key_field ] == $item ) {
+ unset( $list[ $key ] );
+ }
+ } else {
+ if ( $val == $item ) {
+ unset( $list[ $key ] );
+ }
+ }
+ }
+ // repack the indices
+ $list = array_values( $list );
+ }
+
+ public function addTo( $email, $name = null ) {
+ if ( $this->to == null ) {
+ $this->to = array();
+ }
+
+ if ( is_array( $email ) ) {
+ foreach ( $email as $e ) {
+ $this->to[] = $e;
+ }
+ } else {
+ $this->to[] = $email;
+ }
+
+ if ( is_array( $name ) ) {
+ foreach ( $name as $n ) {
+ $this->addToName( $n );
+ }
+ } elseif ( $name ) {
+ $this->addToName( $name );
+ }
+
+ return $this;
+ }
+
+ public function addSmtpapiTo( $email, $name = null ) {
+ $this->smtpapi->addTo( $email, $name );
+
+ return $this;
+ }
+
+ public function setTos( array $emails ) {
+ $this->to = $emails;
+
+ return $this;
+ }
+
+ public function setSmtpapiTos( array $emails ) {
+ $this->smtpapi->setTos( $emails );
+
+ return $this;
+ }
+
+ public function addToName( $name ) {
+ if ( $this->toName == null ) {
+ $this->toName = array();
+ }
+
+ $this->toName[] = $name;
+
+ return $this;
+ }
+
+ public function getToNames() {
+
+ return $this->toName;
+ }
+
+ public function setFrom( $email ) {
+ $this->from = $email;
+
+ return $this;
+ }
+
+ public function getFrom( $as_array = false ) {
+ if ( $as_array && ($name = $this->getFromName()) ) {
+ return array( "$this->from" => $name );
+ } else {
+ return $this->from;
+ }
+ }
- public function setSubstitutions($key_value_pairs)
- {
- $this->smtpapi->setSubstitutions($key_value_pairs);
+ public function setFromName( $name ) {
+ $this->fromName = $name;
- return $this;
- }
+ return $this;
+ }
+
+ public function getFromName() {
+
+ return $this->fromName;
+ }
- public function addSubstitution($from_value, array $to_values)
- {
- $this->smtpapi->addSubstitution($from_value, $to_values);
+ public function setReplyTo( $email ) {
+ $this->replyTo = $email;
- return $this;
- }
+ return $this;
+ }
- public function setSections(array $key_value_pairs)
- {
- $this->smtpapi->setSections($key_value_pairs);
+ public function getReplyTo() {
- return $this;
- }
+ return $this->replyTo;
+ }
- public function addSection($from_value, $to_value)
- {
- $this->smtpapi->addSection($from_value, $to_value);
+ public function setCc( $email ) {
+ $this->cc = array( $email );
- return $this;
- }
+ return $this;
+ }
- public function setUniqueArgs(array $key_value_pairs)
- {
- $this->smtpapi->setUniqueArgs($key_value_pairs);
+ public function setCcs( array $email_list ) {
+ $this->cc = $email_list;
- return $this;
- }
+ return $this;
+ }
- ## synonym method
- public function setUniqueArguments(array $key_value_pairs)
- {
- $this->smtpapi->setUniqueArgs($key_value_pairs);
+ public function addCc( $email, $name = null ) {
+ if ( $this->cc == null ) {
+ $this->cc = array();
+ }
- return $this;
- }
+ if ( is_array( $email ) ) {
+ foreach ( $email as $e ) {
+ $this->cc[] = $e;
+ }
+ } else {
+ $this->cc[] = $email;
+ }
- public function addUniqueArg($key, $value)
- {
- $this->smtpapi->addUniqueArg($key, $value);
-
- return $this;
- }
-
- ## synonym method
- public function addUniqueArgument($key, $value)
- {
- $this->smtpapi->addUniqueArg($key, $value);
-
- return $this;
- }
-
- public function setFilters($filter_settings)
- {
- $this->smtpapi->setFilters($filter_settings);
-
- return $this;
- }
-
- ## synonym method
- public function setFilterSettings($filter_settings)
- {
- $this->smtpapi->setFilters($filter_settings);
-
- return $this;
- }
-
- public function addFilter($filter_name, $parameter_name, $parameter_value)
- {
- $this->smtpapi->addFilter($filter_name, $parameter_name, $parameter_value);
-
- return $this;
- }
-
- ## synonym method
- public function addFilterSetting($filter_name, $parameter_name, $parameter_value)
- {
- $this->smtpapi->addFilter($filter_name, $parameter_name, $parameter_value);
-
- return $this;
- }
-
- public function getHeaders()
- {
- return $this->headers;
- }
-
- public function getHeadersJson()
- {
- if (count($this->getHeaders()) <= 0) {
- return "{}";
- }
-
- return json_encode($this->getHeaders(), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP);
- }
-
- public function setHeaders($key_value_pairs)
- {
- $this->headers = $key_value_pairs;
-
- return $this;
- }
-
- public function addHeader($key, $value)
- {
- $this->headers[$key] = $value;
-
- return $this;
- }
-
- public function removeHeader($key)
- {
- unset($this->headers[$key]);
-
- return $this;
- }
-
- public function getSmtpapi()
- {
- return $this->smtpapi;
- }
-
- public function toWebFormat()
- {
- $web = array(
- 'to' => $this->to,
- 'from' => $this->getFrom(),
- 'x-smtpapi' => $this->smtpapi->jsonString(),
- 'subject' => $this->getSubject(),
- 'text' => $this->getText(),
- 'html' => $this->getHtml(),
- 'headers' => $this->getHeadersJson(),
- );
-
- if ($this->getToNames()) {
- $web['toname'] = $this->getToNames();
- }
- if ($this->getCcs()) {
- $web['cc'] = $this->getCcs();
- }
- if ($this->getCcNames()) {
- $web['ccname'] = $this->getCcNames();
- }
- if ($this->getBccs()) {
- $web['bcc'] = $this->getBccs();
- }
- if ($this->getBccNames()) {
- $web['bccname'] = $this->getBccNames();
- }
- if ($this->getFromName()) {
- $web['fromname'] = $this->getFromName();
- }
- if ($this->getReplyTo()) {
- $web['replyto'] = $this->getReplyTo();
- }
- if ($this->getDate()) {
- $web['date'] = $this->getDate();
- }
- if ($this->smtpapi->to && (count($this->smtpapi->to) > 0)) {
- $web['to'] = "";
- }
-
- $web = $this->updateMissingTo($web);
-
- if ($this->getAttachments()) {
- foreach ($this->getAttachments() as $f) {
- $file = $f['file'];
- $extension = null;
- if (array_key_exists('extension', $f)) {
- $extension = $f['extension'];
- };
- $filename = $f['filename'];
- $full_filename = $filename;
-
- if (isset($extension)) {
- $full_filename = $filename . '.' . $extension;
- }
- if (array_key_exists('custom_filename', $f)) {
- $full_filename = $f['custom_filename'];
- }
-
- if (array_key_exists('cid', $f)) {
- $web['content[' . $full_filename . ']'] = $f['cid'];
- }
-
- $contents = '@' . $file;
-
- // Guzzle handles this for us.
- // http://guzzle3.readthedocs.org/en/latest/http-client/request.html#post-requests
- // if (class_exists('CurlFile', false)) { // php >= 5.5
- // $contents = new \CurlFile($file, $extension, $filename);
- // }
-
- $web['files[' . $full_filename . ']'] = $contents;
- };
- }
-
- return $web;
- }
-
- /**
- * There needs to be at least 1 to address, or else the mail won't send.
- * This method modifies the data that will be sent via either Rest
- */
- public function updateMissingTo($data)
- {
- if ($this->smtpapi->to && (count($this->smtpapi->to) > 0)) {
- $data['to'] = $this->getFrom();
- }
-
- return $data;
- }
+ if ( is_array( $name ) ) {
+ foreach ( $name as $n ) {
+ $this->addCcName( $n );
+ }
+ } elseif ( $name ) {
+ $this->addCcName( $name );
+ }
+
+ return $this;
+ }
+
+ public function addCcName( $name ) {
+ if ( $this->ccName == null ) {
+ $this->ccName = array();
+ }
+
+ $this->ccName[] = $name;
+
+ return $this;
+ }
+
+ public function removeCc( $email ) {
+ $this->_removeFromList( $this->cc, $email );
+
+ return $this;
+ }
+
+ public function getCcs() {
+
+ return $this->cc;
+ }
+
+ public function getCcNames() {
+
+ return $this->ccName;
+ }
+
+ public function setBcc( $email ) {
+ $this->bcc = array( $email );
+
+ return $this;
+ }
+
+ public function setBccs( $email_list ) {
+ $this->bcc = $email_list;
+
+ return $this;
+ }
+
+ public function addBcc( $email, $name = null ) {
+ if ( $this->bcc == null ) {
+ $this->bcc = array();
+ }
+
+ if ( is_array( $email ) ) {
+ foreach ( $email as $e ) {
+ $this->bcc[] = $e;
+ }
+ } else {
+ $this->bcc[] = $email;
+ }
+
+ if ( is_array( $name ) ) {
+ foreach ( $name as $n ) {
+ $this->addBccName( $n );
+ }
+ } elseif ( $name ) {
+ $this->addBccName( $name );
+ }
+
+ return $this;
+ }
+
+ public function addBccName( $name ) {
+ if ( $this->bccName == null ) {
+ $this->bccName = array();
+ }
+
+ $this->bccName[] = $name;
+
+ return $this;
+ }
+
+ public function getBccNames() {
+
+ return $this->bccName;
+ }
+
+ public function removeBcc( $email ) {
+ $this->_removeFromList( $this->bcc, $email );
+
+ return $this;
+ }
+
+ public function getBccs() {
+
+ return $this->bcc;
+ }
+
+ public function setSubject( $subject ) {
+ $this->subject = $subject;
+
+ return $this;
+ }
+
+ public function getSubject() {
+
+ return $this->subject;
+ }
+
+ public function setDate( $date ) {
+ $this->date = $date;
+
+ return $this;
+ }
+
+ public function getDate() {
+
+ return $this->date;
+ }
+
+ public function setText( $text ) {
+ $this->text = $text;
+
+ return $this;
+ }
+
+ public function getText() {
+
+ return $this->text;
+ }
+
+ public function setHtml( $html ) {
+ $this->html = $html;
+
+ return $this;
+ }
+
+ public function getHtml() {
+
+ return $this->html;
+ }
+
+ public function setSendAt( $timestamp ) {
+ $this->smtpapi->setSendAt( $timestamp );
+
+ return $this;
+ }
+
+ public function setSendEachAt( array $timestamps ) {
+ $this->smtpapi->setSendEachAt( $timestamps );
+
+ return $this;
+ }
+
+ public function addSendEachAt( $timestamp ) {
+ $this->smtpapi->addSendEachAt( $timestamp );
+
+ return $this;
+ }
+
+ /**
+ * Convenience method to add template
+ *
+ * @param string The id of the template
+ *
+ * @return $this
+ */
+ public function setTemplateId( $templateId ) {
+ $this->addFilter( 'templates', 'enabled', 1 );
+ $this->addFilter( 'templates', 'template_id', $templateId );
+
+ return $this;
+ }
+
+ /** Convenience method to set asm group id
+ *
+ * @param string the group id
+ *
+ * @return $this
+ */
+ public function setAsmGroupId( $groupId ) {
+ $this->smtpapi->setASMGroupID( $groupId );
+
+ return $this;
+ }
+
+ public function setAttachments( array $files ) {
+ $this->attachments = array();
+
+ foreach ( $files as $filename => $file ) {
+ if ( is_string( $filename ) ) {
+ $this->addAttachment( $file, $filename );
+ } else {
+ $this->addAttachment( $file );
+ }
+ }
+
+ return $this;
+ }
+
+ public function setAttachment( $file, $custom_filename = null, $cid = null ) {
+ $this->attachments = array( $this->getAttachmentInfo( $file, $custom_filename, $cid ) );
+
+ return $this;
+ }
+
+ public function addAttachment( $file, $custom_filename = null, $cid = null ) {
+ $this->attachments[] = $this->getAttachmentInfo( $file, $custom_filename, $cid );
+
+ return $this;
+ }
+
+ public function getAttachments() {
+
+ return $this->attachments;
+ }
+
+ public function removeAttachment( $file ) {
+ $this->_removeFromList( $this->attachments, $file, 'file' );
+
+ return $this;
+ }
+
+ private function getAttachmentInfo( $file, $custom_filename = null, $cid = null ) {
+ $info = pathinfo( $file );
+ $info['file'] = $file;
+ if ( ! is_null( $custom_filename ) ) {
+ $info['custom_filename'] = $custom_filename;
+ }
+ if ( $cid !== null ) {
+ $info['cid'] = $cid;
+ }
+
+ return $info;
+ }
+
+ public function setCategories( $categories ) {
+ $this->smtpapi->setCategories( $categories );
+
+ return $this;
+ }
+
+ public function setCategory( $category ) {
+ $this->smtpapi->setCategory( $category );
+
+ return $this;
+ }
+
+ public function addCategory( $category ) {
+ $this->smtpapi->addCategory( $category );
+
+ return $this;
+ }
+
+ public function removeCategory( $category ) {
+ $this->smtpapi->removeCategory( $category );
+
+ return $this;
+ }
+
+ public function setSubstitutions( $key_value_pairs ) {
+ $this->smtpapi->setSubstitutions( $key_value_pairs );
+
+ return $this;
+ }
+
+ public function addSubstitution( $from_value, array $to_values ) {
+ $this->smtpapi->addSubstitution( $from_value, $to_values );
+
+ return $this;
+ }
+
+ public function setSections( array $key_value_pairs ) {
+ $this->smtpapi->setSections( $key_value_pairs );
+
+ return $this;
+ }
+
+ public function addSection( $from_value, $to_value ) {
+ $this->smtpapi->addSection( $from_value, $to_value );
+
+ return $this;
+ }
+
+ public function setUniqueArgs( array $key_value_pairs ) {
+ $this->smtpapi->setUniqueArgs( $key_value_pairs );
+
+ return $this;
+ }
+
+ // synonym method
+ public function setUniqueArguments( array $key_value_pairs ) {
+ $this->smtpapi->setUniqueArgs( $key_value_pairs );
+
+ return $this;
+ }
+
+ public function addUniqueArg( $key, $value ) {
+ $this->smtpapi->addUniqueArg( $key, $value );
+
+ return $this;
+ }
+
+ // synonym method
+ public function addUniqueArgument( $key, $value ) {
+ $this->smtpapi->addUniqueArg( $key, $value );
+
+ return $this;
+ }
+
+ public function setFilters( $filter_settings ) {
+ $this->smtpapi->setFilters( $filter_settings );
+
+ return $this;
+ }
+
+ // synonym method
+ public function setFilterSettings( $filter_settings ) {
+ $this->smtpapi->setFilters( $filter_settings );
+
+ return $this;
+ }
+
+ public function addFilter( $filter_name, $parameter_name, $parameter_value ) {
+ $this->smtpapi->addFilter( $filter_name, $parameter_name, $parameter_value );
+
+ return $this;
+ }
+
+ // synonym method
+ public function addFilterSetting( $filter_name, $parameter_name, $parameter_value ) {
+ $this->smtpapi->addFilter( $filter_name, $parameter_name, $parameter_value );
+
+ return $this;
+ }
+
+ public function getHeaders() {
+
+ return $this->headers;
+ }
+
+ public function getHeadersJson() {
+
+ if ( count( $this->getHeaders() ) <= 0 ) {
+ return '{}';
+ }
+
+ return json_encode( $this->getHeaders(), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP );
+ }
+
+ public function setHeaders( $key_value_pairs ) {
+ $this->headers = $key_value_pairs;
+
+ return $this;
+ }
+
+ public function addHeader( $key, $value ) {
+ $this->headers[ $key ] = $value;
+
+ return $this;
+ }
+
+ public function removeHeader( $key ) {
+ unset( $this->headers[ $key ] );
+
+ return $this;
+ }
+
+ public function getSmtpapi() {
+
+ return $this->smtpapi;
+ }
+
+ public function toWebFormat() {
+
+ $web = array(
+ 'to' => $this->to,
+ 'from' => $this->getFrom(),
+ 'x-smtpapi' => $this->smtpapi->jsonString(),
+ 'subject' => $this->getSubject(),
+ 'text' => $this->getText(),
+ 'html' => $this->getHtml(),
+ 'headers' => $this->getHeadersJson(),
+ );
+
+ if ( $this->getToNames() ) {
+ $web['toname'] = $this->getToNames();
+ }
+ if ( $this->getCcs() ) {
+ $web['cc'] = $this->getCcs();
+ }
+ if ( $this->getCcNames() ) {
+ $web['ccname'] = $this->getCcNames();
+ }
+ if ( $this->getBccs() ) {
+ $web['bcc'] = $this->getBccs();
+ }
+ if ( $this->getBccNames() ) {
+ $web['bccname'] = $this->getBccNames();
+ }
+ if ( $this->getFromName() ) {
+ $web['fromname'] = $this->getFromName();
+ }
+ if ( $this->getReplyTo() ) {
+ $web['replyto'] = $this->getReplyTo();
+ }
+ if ( $this->getDate() ) {
+ $web['date'] = $this->getDate();
+ }
+ if ( $this->smtpapi->to && (count( $this->smtpapi->to ) > 0) ) {
+ $web['to'] = '';
+ }
+
+ $web = $this->updateMissingTo( $web );
+
+ if ( $this->getAttachments() ) {
+ foreach ( $this->getAttachments() as $f ) {
+ $file = $f['file'];
+ $extension = null;
+ if ( array_key_exists( 'extension', $f ) ) {
+ $extension = $f['extension'];
+ };
+ $filename = $f['filename'];
+ $full_filename = $filename;
+
+ if ( isset( $extension ) ) {
+ $full_filename = $filename . '.' . $extension;
+ }
+ if ( array_key_exists( 'custom_filename', $f ) ) {
+ $full_filename = $f['custom_filename'];
+ }
+
+ if ( array_key_exists( 'cid', $f ) ) {
+ $web[ 'content[' . $full_filename . ']' ] = $f['cid'];
+ }
+
+ $contents = '@' . $file;
+
+ // Guzzle handles this for us.
+ // http://guzzle3.readthedocs.org/en/latest/http-client/request.html#post-requests
+ // if (class_exists('CurlFile', false)) { // php >= 5.5
+ // $contents = new \CurlFile($file, $extension, $filename);
+ // }
+ $web[ 'files[' . $full_filename . ']' ] = $contents;
+ };
+ }
+
+ return $web;
+ }
+
+ /**
+ * There needs to be at least 1 to address, or else the mail won't send.
+ * This method modifies the data that will be sent via either Rest
+ */
+ public function updateMissingTo( $data ) {
+ if ( $this->smtpapi->to && (count( $this->smtpapi->to ) > 0) ) {
+ $data['to'] = $this->getFrom();
+ }
+
+ return $data;
+ }
}