/** * Get message type. * * @return string */ protected function getMessageType() { $type = null; $numAttach = count($this->mail->getAttachments()); if ($numAttach > 0 && null === $this->html && null === $this->text) { $type = null; } else { if ($numAttach > 0 && null !== $this->html && null !== $this->text) { $type = self::TEXT_HTML_FILE; } else { if ($numAttach > 0 && null !== $this->html) { $type = self::HTML_FILE; } else { if ($numAttach > 0 && null !== $this->text) { $type = self::TEXT_FILE; } else { if (null !== $this->html && null !== $this->text) { $type = self::TEXT_HTML; } else { if (null !== $this->html) { $type = self::HTML; } else { if (null !== $this->text) { $type = self::TEXT; } } } } } } } return $type; }
/** * Get email data from file * * @param string $filename * @throws Exception * @return array */ protected function getEmailFromFile($filename) { $contents = file_get_contents($filename); $email = array('to' => null, 'subject' => null, 'headers' => null, 'message' => null); $headers = substr($contents, 0, strpos($contents, $this->message->getEol() . $this->message->getEol())); $email['message'] = trim(str_replace($headers, '', $contents)); $email['headers'] = trim($headers) . $this->message->getEol() . $this->message->getEol(); if (strpos($email['headers'], 'Subject:') === false) { throw new Exception("Error: There is no subject in the email file '" . $filename . "'."); } if (strpos($email['headers'], 'To:') === false) { throw new Exception("Error: There is no recipient in the email file '" . $filename . "'."); } $subject = substr($contents, strpos($contents, 'Subject:')); $subject = substr($subject, 0, strpos($subject, $this->message->getEol())); $email['headers'] = str_replace($subject . $this->message->getEol(), '', $email['headers']); $email['subject'] = trim(substr($subject . $this->message->getEol(), strpos($subject, ':') + 1)); $to = substr($contents, strpos($contents, 'To:')); $to = substr($to, 0, strpos($to, $this->message->getEol())); $email['headers'] = str_replace($to . $this->message->getEol(), '', $email['headers']); preg_match('/[a-zA-Z0-9\\.\\-\\_+%]+@[a-zA-Z0-9\\-\\_\\.]+\\.[a-zA-Z]{2,4}/', $to, $result); if (!isset($result[0])) { throw new Exception("Error: An valid email could not be parsed from the email file '" . $filename . "'."); } else { $email['to'] = $result[0]; } return $email; }