Skip to content

Commit

Permalink
Cleanup of syntax on message build
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobemerick committed Jan 21, 2016
1 parent 1d1db4e commit 843c75b
Showing 1 changed file with 100 additions and 113 deletions.
213 changes: 100 additions & 113 deletions src/Archangel.php
Expand Up @@ -271,132 +271,91 @@ protected function buildTo()
*/
protected function buildMessage()
{
$message = '';

if(isset($this->attachments) && count($this->attachments) > 0)
$message .= "--{$this->getBoundary()}" . self::LINE_BREAK;

if(
isset($this->plainMessage) && strlen($this->plainMessage) > 0 &&
isset($this->htmlMessage) && strlen($this->htmlMessage) > 0)
{
if(isset($this->attachments) && count($this->attachments) > 0)
{
$message .= "Content-Type: multipart/alternative; boundary={$this->getAlternativeBoundary()}" . self::LINE_BREAK;
$message .= self::LINE_BREAK;
$messageString = '';

if (!empty($this->attachments)) {
$messageString .= "--{$this->getBoundary()}" . self::LINE_BREAK;
}
$message .= "--{$this->getAlternativeBoundary()}" . self::LINE_BREAK;
$message .= 'Content-Type: text/plain; charset="iso-8859"' . self::LINE_BREAK;
$message .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$message .= self::LINE_BREAK;
$message .= $this->plainMessage;
$message .= self::LINE_BREAK;
$message .= "--{$this->getAlternativeBoundary()}" . self::LINE_BREAK;
$message .= 'Content-Type: text/html; charset="iso-8859-1"' . self::LINE_BREAK;
$message .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$message .= self::LINE_BREAK;
$message .= $this->htmlMessage;
$message .= self::LINE_BREAK;
$message .= "--{$this->getAlternativeBoundary()}--" . self::LINE_BREAK;
$message .= self::LINE_BREAK;
}
else if(isset($this->plainMessage) && strlen($this->plainMessage))
{
if(isset($this->attachments) && count($this->attachments) > 0)
{
$message .= 'Content-Type: text/plain; charset="iso-8859"' . self::LINE_BREAK;
$message .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$message .= self::LINE_BREAK;
if (!empty($this->plainMessage) && !empty($this->htmlMessage)) {
if (!empty($this->attachments)) {
$messageString .= "Content-Type: multipart/alternative; boundary={$this->getAlternativeBoundary()}" . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
}
$messageString .= "--{$this->getAlternativeBoundary()}" . self::LINE_BREAK;
$messageString .= 'Content-Type: text/plain; charset="iso-8859"' . self::LINE_BREAK;
$messageString .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
$messageString .= $this->plainMessage;
$messageString .= self::LINE_BREAK;
$messageString .= "--{$this->getAlternativeBoundary()}" . self::LINE_BREAK;
$messageString .= 'Content-Type: text/html; charset="iso-8859-1"' . self::LINE_BREAK;
$messageString .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
$messageString .= $this->htmlMessage;
$messageString .= self::LINE_BREAK;
$messageString .= "--{$this->getAlternativeBoundary()}--" . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
} else if (!empty($this->plainMessage)) {
if (!empty($this->attachments)) {
$messageString .= 'Content-Type: text/plain; charset="iso-8859"' . self::LINE_BREAK;
$messageString .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
}
$messageString .= $this->plainMessage;
$messageString .= self::LINE_BREAK;
} else if (!empty($this->htmlMessage)) {
if (!empty($this->attachments)) {
$messageString .= 'Content-Type: text/html; charset="iso-8859-1"' . self::LINE_BREAK;
$messageString .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
}
$messageString .= $this->htmlMessage;
$messageString .= self::LINE_BREAK;
}
$message .= $this->plainMessage;
$message .= self::LINE_BREAK;
}
else if(isset($this->htmlMessage) && strlen($this->htmlMessage))
{
if(isset($this->attachments) && count($this->attachments) > 0)
{
$message .= 'Content-Type: text/html; charset="iso-8859-1"' . self::LINE_BREAK;
$message .= 'Content-Transfer-Encoding: 7bit' . self::LINE_BREAK;
$message .= self::LINE_BREAK;
if (!empty($this->attachments)) {
foreach ($this->attachments as $attachment) {
$messageString .= "--{$this->getBoundary()}" . self::LINE_BREAK;
$messageString .= "Content-Type: {$attachment['type']}; name=\"{$attachment['title']}\"" . self::LINE_BREAK;
$messageString .= 'Content-Transfer-Encoding: base64' . self::LINE_BREAK;
$messageString .= 'Content-Disposition: attachment' . self::LINE_BREAK;
$messageString .= self::LINE_BREAK;
$messageString .= $this->buildAttachmentContent($attachment);
$messageString .= self::LINE_BREAK;
}
$messageString .= "--{$this->getBoundary()}--" . self::LINE_BREAK;
}
$message .= $this->htmlMessage;
$message .= self::LINE_BREAK;
}
if(isset($this->attachments) && count($this->attachments) > 0)
{
foreach($this->attachments as $attachment)
{
$message .= "--{$this->getBoundary()}" . self::LINE_BREAK;
$message .= "Content-Type: {$attachment['type']}; name=\"{$attachment['title']}\"" . self::LINE_BREAK;
$message .= 'Content-Transfer-Encoding: base64' . self::LINE_BREAK;
$message .= 'Content-Disposition: attachment' . self::LINE_BREAK;
$message .= self::LINE_BREAK;
$message .= $this->buildAttachmentContent($attachment);
$message .= self::LINE_BREAK;
}
$message .= "--{$this->getBoundary()}--" . self::LINE_BREAK;
}
return $message;
return $messageString;
}


/**
* Private holder for the boundry logic
* Not called/created unless it's needed
* Builder for the additional headers needed for multipart emails
*
* @return string boundary
* @return string headers needed for multipart
*/
protected function getBoundary()
protected function buildHeaders()
{
if (!isset($this->boundary)) {
$this->boundary = sprintf('PHP-mixed-%s', uniqid());
$headerString = '';
foreach ($this->headers as $key => $value) {
$headerString .= sprintf('%s: %s', $key, $value) . self::LINE_BREAK;
}
return $this->boundary;
}

/**
* Holder to create the alternative boundry logic
* Not called/created unless it's needed
*
* @return string alternative boundary
*/
protected function getAlternativeBoundary()
{
if (!isset($this->alternativeBoundary)) {
$this->alternativeBoundary = sprintf('PHP-alternative-%s', uniqid());
if (!empty($this->cc)) {
$headerString .= 'CC: ' . implode(', ', $this->cc) . self::LINE_BREAK;
}
if (!empty($this->bcc)) {
$headerString .= 'BCC: ' . implode(', ', $this->bcc) . self::LINE_BREAK;
}

if (!empty($this->attachments)) {
$headerString .= "Content-Type: multipart/mixed; boundary=\"{$this->getBoundary()}\"";
} else if (!empty($this->plainMessage) && !empty($this->htmlMessage)) {
$headerString .= "Content-Type: multipart/alternative; boundary=\"{$this->getAlternativeBoundary()}\"";
} else if (!empty($this->htmlMessage)) {
$headerString .= 'Content-type: text/html; charset="iso-8859-1"';
}
return $this->alternativeBoundary;
}

/**
* Fetcher for the additional headers needed for multipart emails
*
* @return string headers needed for multipart
*/
protected function buildHeaders()
{
$headers = '';
foreach($this->headers as $key => $value)
{
$headers .= "{$key}: {$value}" . self::LINE_BREAK;
}

if(count($this->cc) > 0)
$headers .= 'CC: ' . implode(', ', $this->cc) . self::LINE_BREAK;
if(count($this->bcc) > 0)
$headers .= 'BCC: ' . implode(', ', $this->bcc) . self::LINE_BREAK;

if(isset($this->attachments) && count($this->attachments) > 0)
$headers .= "Content-Type: multipart/mixed; boundary=\"{$this->getBoundary()}\"";
else if(
isset($this->plainMessage) && strlen($this->plainMessage) > 0 &&
isset($this->htmlMessage) && strlen($this->htmlMessage) > 0)
{
$headers .= "Content-Type: multipart/alternative; boundary=\"{$this->getAlternativeBoundary()}\"";
}
else if(isset($this->htmlMessage) && strlen($this->htmlMessage) > 0)
$headers .= 'Content-type: text/html; charset="iso-8859-1"';

return $headers;
return $headerString;
}

/**
Expand All @@ -418,4 +377,32 @@ protected function buildAttachmentContent($attachment)
$contents = chunk_split($contents);
return $contents;
}

/**
* Holder for the boundry logic
* Not called/created unless it's needed
*
* @return string boundary
*/
protected function getBoundary()
{
if (!isset($this->boundary)) {
$this->boundary = sprintf('PHP-mixed-%s', uniqid());
}
return $this->boundary;
}

/**
* Holder to create the alternative boundry logic
* Not called/created unless it's needed
*
* @return string alternative boundary
*/
protected function getAlternativeBoundary()
{
if (!isset($this->alternativeBoundary)) {
$this->alternativeBoundary = sprintf('PHP-alternative-%s', uniqid());
}
return $this->alternativeBoundary;
}
}

0 comments on commit 843c75b

Please sign in to comment.