SimpleEmailServiceMessage::getRawMessage PHP Method

getRawMessage() public method

Get the raw mail message
public getRawMessage ( ) : string
return string
    public function getRawMessage()
    {
        $boundary = uniqid(rand(), true);
        $raw_message = count($this->customHeaders) > 0 ? join("\n", $this->customHeaders) . "\n" : '';
        $raw_message .= 'To:' . $this->encodeRecipients($this->to) . "\n";
        $raw_message .= 'From:' . $this->encodeRecipients($this->from) . "\n";
        if (!empty($this->replyto)) {
            $raw_message .= 'Reply-To:' . $this->encodeRecipients($this->replyto) . "\n";
        }
        if (!empty($this->cc)) {
            $raw_message .= 'CC: ' . $this->encodeRecipients($this->cc) . "\n";
        }
        if (!empty($this->bcc)) {
            $raw_message .= 'BCC: ' . $this->encodeRecipients($this->bcc) . "\n";
        }
        if ($this->subject != null && strlen($this->subject) > 0) {
            $raw_message .= 'Subject: =?' . $this->subjectCharset . '?B?' . base64_encode($this->subject) . "?=\n";
        }
        $raw_message .= 'MIME-Version: 1.0' . "\n";
        $raw_message .= 'Content-type: ' . ($this->hasInlineAttachments() ? 'multipart/related' : 'Multipart/Mixed') . '; boundary="' . $boundary . '"' . "\n";
        $raw_message .= "\n--{$boundary}\n";
        $raw_message .= 'Content-type: Multipart/Alternative; boundary="alt-' . $boundary . '"' . "\n";
        if ($this->messagetext != null && strlen($this->messagetext) > 0) {
            $charset = empty($this->messageTextCharset) ? '' : "; charset=\"{$this->messageTextCharset}\"";
            $raw_message .= "\n--alt-{$boundary}\n";
            $raw_message .= 'Content-Type: text/plain' . $charset . "\n\n";
            $raw_message .= $this->messagetext . "\n";
        }
        if ($this->messagehtml != null && strlen($this->messagehtml) > 0) {
            $charset = empty($this->messageHtmlCharset) ? '' : "; charset=\"{$this->messageHtmlCharset}\"";
            $raw_message .= "\n--alt-{$boundary}\n";
            $raw_message .= 'Content-Type: text/html' . $charset . "\n\n";
            $raw_message .= $this->messagehtml . "\n";
        }
        $raw_message .= "\n--alt-{$boundary}--\n";
        foreach ($this->attachments as $attachment) {
            $raw_message .= "\n--{$boundary}\n";
            $raw_message .= 'Content-Type: ' . $attachment['mimeType'] . '; name="' . $attachment['name'] . '"' . "\n";
            $raw_message .= 'Content-Disposition: ' . $attachment['attachmentType'] . "\n";
            if (!empty($attachment['contentId'])) {
                $raw_message .= 'Content-ID: ' . $attachment['contentId'] . '' . "\n";
            }
            $raw_message .= 'Content-Transfer-Encoding: base64' . "\n";
            $raw_message .= "\n" . chunk_split(base64_encode($attachment['data']), 76, "\n") . "\n";
        }
        $raw_message .= "\n--{$boundary}--\n";
        return base64_encode($raw_message);
    }

Usage Example

 /**
  * Given a SimpleEmailServiceMessage object, submits the message to the service for sending.
  *
  * @param SimpleEmailServiceMessage $sesMessage An instance of the message class
  * @param boolean $use_raw_request If this is true or there are attachments to the email `SendRawEmail` call will be used
  * @param boolean $trigger_error Optionally overwrite the class setting for triggering an error (with type check to true/false)
  * @return array An array containing the unique identifier for this message and a separate request id.
  *         Returns false if the provided message is missing any required fields.
  *  @link(AWS SES Response formats, http://docs.aws.amazon.com/ses/latest/DeveloperGuide/query-interface-responses.html)
  */
 public function sendEmail($sesMessage, $use_raw_request = false, $trigger_error = null)
 {
     if (!$sesMessage->validate()) {
         $this->__triggerError('sendEmail', 'Message failed validation.');
         return false;
     }
     $rest = new SimpleEmailServiceRequest($this, 'POST');
     $action = !empty($sesMessage->attachments) || $use_raw_request ? 'SendRawEmail' : 'SendEmail';
     $rest->setParameter('Action', $action);
     if ($action == 'SendRawEmail') {
         // echo $sesMessage->getRawMessage();return;
         $rest->setParameter('RawMessage.Data', $sesMessage->getRawMessage());
     } else {
         $i = 1;
         foreach ($sesMessage->to as $to) {
             $rest->setParameter('Destination.ToAddresses.member.' . $i, $sesMessage->encodeRecipients($to));
             $i++;
         }
         if (is_array($sesMessage->cc)) {
             $i = 1;
             foreach ($sesMessage->cc as $cc) {
                 $rest->setParameter('Destination.CcAddresses.member.' . $i, $sesMessage->encodeRecipients($cc));
                 $i++;
             }
         }
         if (is_array($sesMessage->bcc)) {
             $i = 1;
             foreach ($sesMessage->bcc as $bcc) {
                 $rest->setParameter('Destination.BccAddresses.member.' . $i, $sesMessage->encodeRecipients($bcc));
                 $i++;
             }
         }
         if (is_array($sesMessage->replyto)) {
             $i = 1;
             foreach ($sesMessage->replyto as $replyto) {
                 $rest->setParameter('ReplyToAddresses.member.' . $i, $sesMessage->encodeRecipients($replyto));
                 $i++;
             }
         }
         $rest->setParameter('Source', $sesMessage->encodeRecipients($sesMessage->from));
         if ($sesMessage->returnpath != null) {
             $rest->setParameter('ReturnPath', $sesMessage->returnpath);
         }
         if ($sesMessage->subject != null && strlen($sesMessage->subject) > 0) {
             $rest->setParameter('Message.Subject.Data', $sesMessage->subject);
             if ($sesMessage->subjectCharset != null && strlen($sesMessage->subjectCharset) > 0) {
                 $rest->setParameter('Message.Subject.Charset', $sesMessage->subjectCharset);
             }
         }
         if ($sesMessage->messagetext != null && strlen($sesMessage->messagetext) > 0) {
             $rest->setParameter('Message.Body.Text.Data', $sesMessage->messagetext);
             if ($sesMessage->messageTextCharset != null && strlen($sesMessage->messageTextCharset) > 0) {
                 $rest->setParameter('Message.Body.Text.Charset', $sesMessage->messageTextCharset);
             }
         }
         if ($sesMessage->messagehtml != null && strlen($sesMessage->messagehtml) > 0) {
             $rest->setParameter('Message.Body.Html.Data', $sesMessage->messagehtml);
             if ($sesMessage->messageHtmlCharset != null && strlen($sesMessage->messageHtmlCharset) > 0) {
                 $rest->setParameter('Message.Body.Html.Charset', $sesMessage->messageHtmlCharset);
             }
         }
     }
     $rest = $rest->getResponse();
     if ($rest->error === false && $rest->code !== 200) {
         $response = array('code' => $rest->code, 'error' => array('Error' => array('message' => 'Unexpected HTTP status')));
         return $response;
     }
     if ($rest->error !== false) {
         if ($this->__trigger_errors && $trigger_error !== false || $trigger_error === true) {
             $this->__triggerError('sendEmail', $rest->error);
             return false;
         }
         return $rest;
     }
     $response = array('MessageId' => (string) $rest->body->{"{$action}Result"}->MessageId, 'RequestId' => (string) $rest->body->ResponseMetadata->RequestId);
     return $response;
 }