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.php692
1 files changed, 692 insertions, 0 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
new file mode 100644
index 0000000..6c6451a
--- /dev/null
+++ b/Postman/Postman-Mail/sendgrid-php-3.2.0/lib/SendGrid/Email.php
@@ -0,0 +1,692 @@
+<?php
+
+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 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;
+ }
+}