public function sendEmail($from, $to, $cc, $subject, $body, $attachmentFilename)
 {
     $message = new Message();
     $message->setFrom($from);
     $message->setTo($to);
     $message->setCc($cc);
     $message->setSubject($subject);
     $mimeMessage = new \Zend\Mime\Message();
     $part = new \Zend\Mime\Part($body);
     $part->setType(Mime::TYPE_TEXT);
     $part->setCharset('UTF-8');
     $mimeMessage->addPart($part);
     $part = new \Zend\Mime\Part('<p>' . $body . '<p>');
     $part->setType(Mime::TYPE_HTML);
     $part->setCharset('UTF-8');
     $mimeMessage->addPart($part);
     $part = new \Zend\Mime\Part($body);
     $part->setType(Mime::TYPE_OCTETSTREAM);
     $part->setEncoding(Mime::ENCODING_BASE64);
     $part->setFileName($attachmentFilename);
     $part->setDisposition(Mime::DISPOSITION_ATTACHMENT);
     $mimeMessage->addPart($part);
     $message->setBody($mimeMessage);
     $this->transport->send($message);
     $this->debugSection('ZendMailer', $subject . ' ' . $from . ' -> ' . $to);
 }
 /**
  * Sent a email to a user based on the set template.
  * 
  * @param string
  * @param string $name
  * @param array $variables
  *
  * @return EmailService
  * @throws \Exception
  */
 public function send($address, $name = null, array $variables = null)
 {
     $config = $this->getServiceManager()->get('Config')['service-email'];
     if (null !== $variables) {
         $this->setVariables($variables);
     }
     $this->setVariable('baseurl', $this->constructBaseUrl());
     $message = $this->_constructEmail($address, $name);
     switch (strtolower($config['transport'])) {
         case 'sendmail':
             $transport = new Sendmail();
             break;
         case 'smtp':
             $transport = new Smtp(new SmtpOptions($config['smtp']));
             break;
         case 'file':
             $transport = new File(new FileOptions($config['file']));
             break;
         default:
             throw new Exception('Invalid transport type: ' . $config->transport . '.');
     }
     try {
         $transport->send($message);
     } catch (\Exception $e) {
         throw new \Exception('Could not send out the requested e-mail. An error occured: ' . $e->getMessage());
     }
     $this->clean();
     return $this;
 }