Example #1
0
 public function run()
 {
     $transport = new SmtpTransport(new SmtpOptions(array('name' => $this->host, 'host' => $this->host, 'port' => $this->port, 'connection_config' => array('username' => $this->sender->getUsername(), 'password' => $this->sender->getPassword()))));
     if ($this->auth !== null) {
         $transport->getOptions()->setConnectionClass($this->auth);
     }
     $message = new Message();
     $message->addFrom($this->sender->getUsername())->setSubject($this->subject);
     if ($this->bcc) {
         $message->addBcc($this->recipients);
     } else {
         $message->addTo($this->recipients);
     }
     $body = new MimeMessage();
     if ($this->htmlBody == null) {
         $text = new MimePart($this->textBody);
         $text->type = "text/plain";
         $body->setParts(array($text));
     } else {
         $html = new MimePart($this->htmlBody);
         $html->type = "text/html";
         $body->setParts(array($html));
     }
     $message->setBody($body);
     $transport->send($message);
 }
 /**
  * @inheritDoc
  */
 public static function fromWrappedMessage(MailWrappedMessage $wrappedMessage = null, $transport = null)
 {
     if (!$wrappedMessage instanceof MailWrappedMessage) {
         throw new MailWrapperSetupException('Not MailWrappedMessage');
     }
     $message = new Message();
     foreach ($wrappedMessage->getToRecipients() as $address) {
         $message->addTo($address);
     }
     foreach ($wrappedMessage->getCcRecipients() as $address) {
         $message->addCc($address);
     }
     foreach ($wrappedMessage->getBccRecipients() as $address) {
         $message->addBcc($address);
     }
     $message->setReplyTo($wrappedMessage->getReplyTo());
     $message->setFrom($wrappedMessage->getFrom());
     $message->setSubject($wrappedMessage->getSubject());
     if ($wrappedMessage->getContentText()) {
         $message->setBody($wrappedMessage->getContentText());
     }
     if ($wrappedMessage->getContentHtml()) {
         $html = new MimePart($wrappedMessage->getContentHtml());
         $html->type = "text/html";
         $message->setBody($body);
     }
     return $message;
 }
 /**
  * Send email
  * 
  * @access public
  */
 public function execute()
 {
     $payload = $this->getContent();
     $from = $payload['from'];
     $to = $payload['to'];
     $subject = $payload['subject'];
     $body = $payload['body'];
     $message = new Message();
     $message->addTo($to)->addFrom($from)->setSubject($subject)->setBody($body);
     if (array_key_exists('bcc', $payload)) {
         $bcc = $payload['bcc'];
         $message->addBcc($bcc);
     }
     if (array_key_exists('cc', $payload)) {
         $cc = $payload['cc'];
         $message->addCc($cc);
     }
     $this->transport->send($message);
 }
Example #4
0
 public function sendMail($mail)
 {
     // Build the message body
     $mimeParts = array();
     foreach ($mail->getParts() as $part) {
         $mimePart = new MimePart($part->getContent());
         $mimePart->type = $part->getType();
         $mimeParts[] = $mimePart;
     }
     $body = new MimeMessage();
     $body->setParts($mimeParts);
     // Build the message.
     $message = new Mail\Message();
     $message->setBody($body);
     // Set the participants
     foreach ($mail->getParticipants() as $participant) {
         if ($participant->getComposition() == 'to') {
             $message->addTo($participant->getAddress(), $participant->getName());
         }
         if ($participant->getComposition() == 'cc') {
             $message->addCc($participant->getAddress(), $participant->getName());
         }
         if ($participant->getComposition() == 'bcc') {
             $message->addBcc($participant->getAddress(), $participant->getName());
         }
         if ($participant->getComposition() == 'from') {
             $message->addFrom($participant->getAddress(), $participant->getName());
         }
     }
     // Set the subject
     $message->setSubject($mail->getSubject());
     $contentType = $mail->getContentType();
     if ($contentType) {
         $message->getHeaders()->get('content-type')->setType($contentType);
     }
     // Create the transport and send.
     $transport = new SmtpTransport();
     $transport->setOptions(new SmtpOptions($this->options));
     $transport->send($message);
 }
Example #5
0
 /**
  * Set the BCC and CC recipients to the email (they are the same for every email).
  *
  * @return Message
  */
 public function setShadowRecipients()
 {
     //Cc recipients
     foreach ($this->email->getCc() as $emailAddress => $contact) {
         if ($contact instanceof Contact) {
             $this->message->addCc($contact->getEmail(), $contact);
         } else {
             $this->message->addCc($emailAddress, $contact);
         }
     }
     //Bcc recipients
     foreach ($this->email->getBcc() as $emailAddress => $contact) {
         if ($contact instanceof Contact) {
             $this->message->addBcc($contact->getEmail(), $contact);
         } else {
             $this->message->addBcc($emailAddress, $contact);
         }
     }
     if (!is_null($this->email->getReplyTo())) {
         $this->message->addReplyTo($this->email->getReplyTo(), $this->email->getReplyToName());
     }
 }
Example #6
0
 public function send($data = array(), $viewModel)
 {
     if ($viewModel instanceof ModelInterface) {
         $body = $this->renderModel($viewModel);
     } elseif (is_string($viewModel)) {
         $body = $this->renderText($viewModel);
     } else {
         throw new \Exception('Invalid viewModel for mail body');
     }
     $text = new MimePart('');
     $text->type = "text/plain";
     $html = new MimePart($body);
     $html->type = "text/html";
     $body_html = new MimeMessage();
     $body_html->setParts(array($text, $html));
     $mail = new Mail\Message();
     $mail->setEncoding("UTF-8");
     $mail->setBody($body_html);
     $mail->setFrom($this->_from_mail, $this->_from_name);
     $mail->addTo($data['to']);
     if (isset($data['cc'])) {
         $mail->addCc($data['cc']);
     }
     if (isset($data['bcc'])) {
         $mail->addBcc($data['bcc']);
     }
     if (isset($data['replyTo'])) {
         $mail->addReplyTo($data['replyTo'], $data['replyNameTo']);
     } else {
         $mail->addReplyTo($this->_from_mail, $this->_from_name);
     }
     if (isset($data['dkimSign'])) {
         $signer = $this->getController()->getServiceLocator()->get('DkimSigner');
         $signer->signMessage($mail);
     }
     $mail->setSubject($data['subject']);
     return $this->_transport->send($mail);
 }
Example #7
0
 public function testSettingNonAsciiEncodingForcesMimeEncodingOfSomeHeaders()
 {
     $this->message->addTo('*****@*****.**', 'ZF DevTeam');
     $this->message->addFrom('*****@*****.**', "Matthew Weier O'Phinney");
     $this->message->addCc('*****@*****.**', 'ZF Contributors List');
     $this->message->addBcc('*****@*****.**', 'ZF CR Team');
     $this->message->setSubject('This is a subject');
     $this->message->setEncoding('UTF-8');
     $test = $this->message->getHeaders()->toString();
     $expected = '=?UTF-8?Q?ZF=20DevTeam?=';
     $this->assertContains($expected, $test);
     $this->assertContains('<*****@*****.**>', $test);
     $expected = "=?UTF-8?Q?Matthew=20Weier=20O'Phinney?=";
     $this->assertContains($expected, $test, $test);
     $this->assertContains('<*****@*****.**>', $test);
     $expected = '=?UTF-8?Q?ZF=20Contributors=20List?=';
     $this->assertContains($expected, $test);
     $this->assertContains('<*****@*****.**>', $test);
     $expected = '=?UTF-8?Q?ZF=20CR=20Team?=';
     $this->assertContains($expected, $test);
     $this->assertContains('<*****@*****.**>', $test);
     $expected = 'Subject: =?UTF-8?Q?This=20is=20a=20subject?=';
     $this->assertContains($expected, $test);
 }
Example #8
0
 /**
  * send email
  *
  * @param        $fromemail
  * @param        $accessToken
  * @param        $email_type
  * @param        $imap_server
  * @param        $subject
  * @param        $body
  * @param        $toEmail
  * @param        $ccEmail
  * @param        $bccEmail
  * @param        $attachemnts
  * @param string $mailtype
  *
  * @return bool|void
  *
  * @since rt-Helpdesk 0.1
  */
 public function sendemail($fromname, $fromemail, $accessToken, $email_type, $imap_server, $subject, $body, $toEmail, $ccEmail, $bccEmail, $attachemnts, $email = null, $mailtype = 'notification')
 {
     set_time_limit(0);
     if (!$this->try_imap_login($fromemail, $accessToken, $email_type, $imap_server)) {
         return false;
     }
     $transport = new SmtpTransport();
     $smtp_args = array();
     switch ($email_type) {
         case 'goauth':
             $smtp_args['name'] = 'gmail-smtp';
             $smtp_args['host'] = 'smtp.gmail.com';
             $smtp_args['port'] = 465;
             $smtp_args['connection_class'] = 'oauth2';
             $smtp_args['connection_config'] = array('xoauth2_request' => $this->authString, 'ssl' => 'ssl');
             break;
         case 'imap':
             global $rt_imap_server_model;
             $server = $rt_imap_server_model->get_server_by_id($imap_server);
             if (empty($server)) {
                 echo 'Mail Server Not Found. Invalid Server id.';
                 return false;
             }
             $smtp_args['name'] = $server->outgoing_smtp_server;
             $smtp_args['host'] = $server->outgoing_smtp_server;
             $smtp_args['port'] = $server->outgoing_smtp_port;
             $smtp_args['connection_class'] = 'login';
             $smtp_args['connection_config'] = array('username' => $fromemail, 'password' => rtmb_encrypt_decrypt($accessToken), 'ssl' => $server->outgoing_smtp_enc);
             break;
         default:
             break;
     }
     $options = new SmtpOptions($smtp_args);
     $transport->setOptions($options);
     $message = new Message();
     $message->addFrom($fromemail, $fromname);
     if (!empty($email)) {
         $message_id = $reference_id = $in_reply_to = '';
         if ('comment' == $email->refrence_type) {
             $message_id = get_comment_meta($email->refrence_id, '_rtlib_messageid', true);
             $reference_id = get_comment_meta($email->refrence_id, '_rtlib_references', true);
             if (empty($message_id)) {
                 $comment = get_comment($email->refrence_id);
                 $post_id = $comment->comment_post_ID;
             }
         } else {
             if ('post' == $email->refrence_type) {
                 $post_id = $email->refrence_id;
             }
         }
         if (isset($post_id)) {
             $reference_id = get_post_meta($post_id, '_rtlib_references', true);
             $message_id = rtmb_get_reply_to_from_ref_id($reference_id);
             $reply_to = apply_filters('rtlib_reply_to_header', '', $fromemail, $post_id);
             if (!empty($reply_to)) {
                 $message->addCustomeHeader('Reply-To', trim($reply_to));
             }
         }
         //Get reply to header
         if (!empty($message_id)) {
             $message->addCustomeHeader('In-Reply-To', trim($message_id));
         }
         //Get References header
         if (!empty($message_id)) {
             $reference_id = rtmb_add_message_id_in_ref_id($message_id, $reference_id);
         }
         if (!empty($reference_id)) {
             $reference_ids = rtmb_get_reference_id_array($reference_id);
             $_reference_id = implode(' ', $reference_ids);
             $message->addCustomeHeader('References', $_reference_id);
         }
         // Add x-mailer
         if (!empty($email->refrence_id)) {
             $message->addCustomeHeader('X-Mailer', 'rtCamp-mail-lib');
             if ('comment' == $email->refrence_type) {
                 $comment = get_comment($email->refrence_id);
                 $post_id = $comment->comment_post_ID;
             } else {
                 $post_id = $email->refrence_id;
             }
             $new_message_id = rtmb_generate_message_id($post_id, $email->id);
             rtmb_add_message_id_in_ref_id($new_message_id, $reference_id, $post_id);
             $message->addCustomeHeader('Message-ID', $new_message_id);
         }
     }
     //$mail->setFrom($fromemail);
     $message->setSubject(stripslashes_deep(html_entity_decode($subject, ENT_QUOTES, 'UTF-8')));
     //$mail->setSubject($subject);
     if (!empty($toEmail)) {
         foreach ($toEmail as $temail) {
             //$mail->addTo($temail["email"], isset($temail["name"]) ? $temail["name"] : '');
             $message->addTo($temail['email'], isset($temail['name']) ? $temail['name'] : '');
         }
     }
     if (!empty($ccEmail)) {
         foreach ($ccEmail as $temail) {
             //$mail->addCc($temail["email"], isset($temail["name"]) ? $temail["name"] : '');
             $message->addCc($temail['email'], isset($temail['name']) ? $temail['name'] : '');
         }
     }
     if (!empty($bccEmail)) {
         foreach ($bccEmail as $temail) {
             if (isset($temail['email'])) {
                 $message->addBcc($temail['email'], isset($temail['name']) ? $temail['name'] : '');
             }
         }
     }
     // create a MimeMessage object that will hold the mail body and any attachments
     $bodyPart = new MimeMessage();
     $bodyMessage = new MimePart($body);
     $bodyMessage->type = 'text/html';
     $bodyMessage->encoding = Mime::ENCODING_QUOTEDPRINTABLE;
     $bodyPart->addPart($bodyMessage);
     if (!empty($attachemnts) && is_array($attachemnts)) {
         foreach ($attachemnts as $attach) {
             $file_array = explode('/', $attach);
             $fileName = $file_array[count($file_array) - 1];
             $attachment = new MimePart(file_get_contents($attach));
             $attachment->type = rtmb_get_mime_type($attach);
             $attachment->filename = $fileName;
             $attachment->encoding = Zend\Mime\Mime::ENCODING_BASE64;
             $attachment->disposition = Zend\Mime\Mime::DISPOSITION_ATTACHMENT;
             $bodyPart->addPart($attachment);
         }
     }
     $message->setBody($bodyPart);
     $transport->send($message);
     return true;
 }
Example #9
0
 /**
  * @group medium
  */
 public function testMsgHandleUidSearch()
 {
     $path1 = './test_data/test_mailbox_' . date('Ymd_His') . '_' . uniqid('', true);
     $log = new Logger('test_application');
     #$log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));
     $server = new Server('', 0);
     $server->setLog($log);
     $server->init();
     $storage1 = new DirectoryStorage();
     $storage1->setPath($path1);
     $server->addStorage($storage1);
     $client = new Client();
     $client->setServer($server);
     $client->setId(1);
     $msg = $client->msgHandle('17 uid search');
     $this->assertEquals('17 NO uid failure' . Client::MSG_SEPARATOR, $msg);
     $client->setStatus('hasAuth', true);
     $msg = $client->msgHandle('17 uid search');
     $this->assertEquals('17 NO No mailbox selected.' . Client::MSG_SEPARATOR, $msg);
     $client->msgHandle('6 select INBOX');
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 1');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 2');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_ANSWERED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->addBcc('*****@*****.**');
     $message->setSubject('my_subject 3');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $headers = new Headers();
     $headers->addHeader(Date::fromString('Date: ' . date('r', mktime(0, 0, 0, 2, 21, 1987))));
     $message = new Message();
     $message->setHeaders($headers);
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 4');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->setHeaders($headers);
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 5');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $headers = new Headers();
     $headers->addHeader(Date::fromString('Date: ' . date('r', mktime(0, 0, 0, 11, 20, 1986))));
     $message = new Message();
     $message->setHeaders($headers);
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 6');
     $message->setBody('hello world');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 7');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DELETED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 8');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DRAFT), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 9');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_FLAGGED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 10');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 11');
     $message->setBody('my super fancy long body for testing the size');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 12');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), true);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 13');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     #$message->setSubject('my_subject 14');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 15');
     $message->setBody('this is a test body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 16');
     #$message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 17');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 18');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 19');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_ANSWERED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 20');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DELETED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 21');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DRAFT), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->addCc('*****@*****.**');
     $message->setSubject('my_subject 22');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_FLAGGED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->addCc('*****@*****.**');
     $message->setSubject('my_subject 23');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_SEEN), false);
     $msg = $client->msgHandle('17 uid SEARCH');
     $expect = '17 BAD Arguments invalid.' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH ALL');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 ';
     $expect .= '100011 100012 100013 100014 100015 100016 100017 100018 100019 100020 100021 ';
     $expect .= '100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH ANSWERED');
     $expect = '* SEARCH 100002 100019' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BCC apple');
     $expect = '* SEARCH 100003' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH BEFORE 1990');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     #$this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BODY world');
     $expect = '* SEARCH 100006' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3');
     $expect = '* SEARCH 100022 100023' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH DELETED');
     $expect = '* SEARCH 100007 100020' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH DRAFT');
     $expect = '* SEARCH 100008 100021' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH FLAGGED');
     $expect = '* SEARCH 100009 100022' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH FROM test@');
     $expect = '* SEARCH 100010' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH HEADER Date 1987');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH HEADER TO fox21');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 100012 ';
     $expect .= '100013 100014 100015 100016 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH LARGER 40');
     $expect = '* SEARCH 100011' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH NEW');
     $expect = '* SEARCH 100012' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OLD');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH ON 1987-02-21');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR 5 6');
     $expect = '* SEARCH 100005 100006' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR OR 5 6 7');
     $expect = '* SEARCH 100005 100006 100007' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH RECENT');
     $expect = '* SEARCH 100012' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SEEN');
     $expect = '* SEARCH 100001 100003 100004 100005 100006 100010 100011 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SENTBEFORE 1990-01-01');
     $expect = '* SEARCH 100004 100005 100006' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SENTON 1987-02-21');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SENTSINCE 1987-02-21');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100007 100008 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SMALLER 30');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SUBJECT "t 13"');
     $expect = '* SEARCH 100013' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH TEXT test');
     $expect = '* SEARCH 100011 100015' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH TO steve');
     $expect = '* SEARCH 100017' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UID 100018');
     $expect = '* SEARCH 100018' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNANSWERED');
     $expect = '* SEARCH 100001 100003 100004 100005 100006 100007 100008 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNDELETED');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100008 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNDRAFT');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNFLAGGED');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH UNKEYWORD');
     $expect = '* SEARCH 123' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     #$this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNSEEN');
     $expect = '* SEARCH 100002 100007 100008 100009 100012 100013 100014 100015 100016 100017 100018';
     $expect .= ' 100019 100020 100021 100022' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR CC dev3 TO steve');
     $expect = '* SEARCH 100017 100022 100023';
     $expect .= '' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR CC dev3 NOT CC dev2');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011';
     $expect .= ' 100012 100013 100014 100015 100016 100017';
     $expect .= ' 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND TO dev2');
     $expect = '';
     $expect .= '* SEARCH 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND OR FROM dev1 TO dev2');
     $expect = '';
     $expect .= '* SEARCH 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND AND FROM dev1 NOT TO dev2');
     $expect = '';
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BEFORE 1985');
     $this->assertEquals('17 OK UID SEARCH completed' . Client::MSG_SEPARATOR, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BODY xyz');
     $this->assertEquals('17 OK UID SEARCH completed' . Client::MSG_SEPARATOR, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH OR (UNDELETED FROM "thefox") ANSWERED AND FROM "21"');
     #$msg = $client->msgHandle('17 uid SEARCH UNDELETED HEADER From @fox21.at HEADER Date 2014');
     #$msg = $client->msgHandle('17 uid SEARCH NOT 5');
     #$msg = $client->msgHandle('17 uid SEARCH NOT UID 100005');
     #$this->assertEquals('x17 OK UID SEARCH completed'.Client::MSG_SEPARATOR, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH NOT UID 100021');
     $server->shutdown();
     $filesystem = new Filesystem();
     $filesystem->remove($path1);
 }
Example #10
0
 public function send()
 {
     # differ the following scenarios:
     # - plain text email
     # - plain text email with 1 or n attachments
     # - html email with text alternative
     # - html email with text alternative and 1 or n attachments
     $content = new Mime\Message();
     if (!$this->isHtmlMessage()) {
         $content->addPart($this->getTextMessage());
     } else {
         $content->addPart($this->getTextMessage());
         $content->addPart($this->getHtmlMessage());
     }
     if (count($this->getAttachments()) == 0) {
         $body = $content;
     } else {
         $contentPart = new Mime\Part($content->generateMessage());
         $contentPart->type = 'multipart/alternative;' . PHP_EOL . ' boundary="' . $content->getMime()->boundary() . '"';
         $body = new Mime\Message();
         $body->addPart($contentPart);
         foreach ($this->getAttachments() as $att) {
             $body->addPart($att);
         }
     }
     $message = new Mail\Message();
     $message->setEncoding('utf-8');
     $message->setBody($body);
     if ($this->isHtmlMessage()) {
         if (count($this->getAttachments()) == 0) {
             $message->getHeaders()->get('content-type')->addParameter('charset', 'utf-8')->setType('multipart/alternative');
         } else {
             $message->getHeaders()->get('content-type')->addParameter('charset', 'utf-8')->setType('multipart/mixed');
             // Important to get all attachments into this email.
         }
     } else {
         $message->getHeaders()->get('content-type')->addParameter('charset', 'utf-8')->setType('text/plain');
     }
     foreach ($this->getTo() as $user) {
         $message->addTo($user->getEmail());
     }
     foreach ($this->getCc() as $user) {
         $message->addCc($user->getEmail());
     }
     foreach ($this->getBcc() as $user) {
         $message->addBcc($user->getEmail());
     }
     $message->addFrom($this->getFrom());
     $message->setSubject($this->getSubject());
     $transport = new Mail\Transport\Sendmail();
     $transport->send($message);
 }
Example #11
0
 function setBcc($address)
 {
     foreach ((array) $address as $bcc) {
         $this->mail->addBcc($bcc);
     }
 }
Example #12
0
 public function sendEmail($template = 'message', $emailOptions = array())
 {
     $emailOptions = array_merge($this->config, $emailOptions);
     $content = $this->renderEmail($template, $emailOptions);
     if ($emailOptions['debug']) {
         $displays = array();
         foreach ($emailOptions as $key => $value) {
             if ($key !== 'message' && $key != 'attachments') {
                 if (!is_object($value)) {
                     $displays[] = $key . ': <strong>' . (is_array($value) ? implode(',', $value) : $value) . '</strong>';
                 } else {
                     $displays[] = $key . ': <strong>OBJ</strong>';
                 }
             }
         }
         echo '<div style="
                     background-color: #444; 
                     padding: 50px;
                     box-shadow: 1px 1px 10px rgba(0,0,0,0.8) inset;
             ">
                 <div style="
                             width:80%; 
                             margin:10px auto; 
                             background-color:#ffffff; 
                             box-shadow:1px 2px 5px rgba(0,0,0,0.5);
                             padding: 15px;
                 " >
                     ' . implode(' ; ', $displays) . '
                 </div>
                 <div style="
                             width:80%; 
                             margin:10px auto; 
                             background-color:#ffffff; 
                             box-shadow:1px 2px 5px rgba(0,0,0,0.5);
                 " >' . $content . '</div>' . (isset($emailOptions['attachments']) && $emailOptions['attachments'] ? '<div style="
                             width:80%; 
                             margin:10px auto; 
                             background-color:#ffffff; 
                             box-shadow:1px 2px 5px rgba(0,0,0,0.5);
                             padding: 15px;
                 " >Mit Anhang</div>' : '') . '</div>';
     }
     $attachments = isset($emailOptions['attachments']) && $emailOptions['attachments'] && is_array($emailOptions['attachments']) ? $emailOptions['attachments'] : array();
     $message = new Message();
     $message->addTo($emailOptions['to']);
     $message->addFrom($emailOptions['from']);
     $message->setSubject($emailOptions['subject']);
     if ($emailOptions['bcc']) {
         $message->addBcc($emailOptions['bcc']);
     }
     if ($emailOptions['cc']) {
         $message->addCc($emailOptions['cc']);
     }
     if ($this->html) {
         // HTML part
         $htmlPart = new MimePart($content);
         $htmlPart->encoding = Mime::ENCODING_QUOTEDPRINTABLE;
         $htmlPart->type = "text/html; charset=UTF-8";
     }
     // Plain text part
     $textPart = new MimePart(strip_tags($content));
     $textPart->encoding = Mime::ENCODING_QUOTEDPRINTABLE;
     $textPart->type = "text/plain; charset=UTF-8";
     $body = new MimeMessage();
     if ($attachments) {
         // With attachments, we need a multipart/related email. First part
         // is itself a multipart/alternative message
         $content = new MimeMessage();
         $content->addPart($textPart);
         if ($this->html) {
             $content->addPart($htmlPart);
         }
         $contentPart = new MimePart($content->generateMessage());
         $contentPart->type = "multipart/alternative;\n boundary=\"" . $content->getMime()->boundary() . '"';
         $body->addPart($contentPart);
         $messageType = 'multipart/related';
         // Add each attachment
         foreach ($attachments as $thisAttachment) {
             $attachment = new MimePart($thisAttachment['buffer']);
             $attachment->filename = $thisAttachment['filename'];
             $attachment->type = Mime::TYPE_OCTETSTREAM;
             $attachment->encoding = Mime::ENCODING_BASE64;
             $attachment->disposition = Mime::DISPOSITION_ATTACHMENT;
             $body->addPart($attachment);
         }
     } else {
         // No attachments, just add the two textual parts to the body
         if ($this->html) {
             $body->setParts(array($textPart, $htmlPart));
             $messageType = 'multipart/alternative';
         } else {
             $body->setParts(array($textPart));
             $messageType = 'text/plain';
         }
     }
     // attach the body to the message and set the content-type
     $message->setBody($body);
     $message->getHeaders()->get('content-type')->setType($messageType);
     $message->setEncoding('UTF-8');
     if ($emailOptions['send']) {
         if (isset($emailOptions['smtp']) && $emailOptions['smtp'] == 'google') {
             $transport = new SmtpTransport();
             $options = new SmtpOptions(array('name' => 'casamail.com', 'host' => 'smtp.gmail.com', 'port' => 465, 'connection_class' => 'login', 'connection_config' => array('username' => $emailOptions['smtp_username'], 'password' => $emailOptions['smtp_password'], 'ssl' => 'ssl')));
             $transport->setOptions($options);
         } else {
             $transport = new SendmailTransport();
         }
         try {
             $transport->send($message);
         } catch (\Exception $e) {
             if (!get_class($transport) == 'Sendmail') {
                 //try with postfix
                 $transport = new SendmailTransport();
                 $transport->send($message);
             }
         }
     } else {
         echo '<h1>E-Mail <strong>NOT</strong> sent</h1>';
     }
     return $content;
 }
 public function previewAction()
 {
     $this->updateLayoutWithIdentity();
     if ($this->disallowRankLessThan(User::RANK_GENERAL)) {
         return false;
     }
     $session = new SessionContainer('NightsWatch\\Announcement\\Create');
     if (empty($session->title)) {
         $this->redirect()->toRoute('home', ['controller' => 'announcement', 'action' => 'create']);
         return false;
     }
     $announcement = new Announcement();
     $announcement->title = $session->title;
     $announcement->content = $session->content;
     $announcement->user = $this->getIdentityEntity();
     $announcement->timestamp = new \DateTime();
     $announcement->lowestReadableRank = $session->rank;
     if ($this->getRequest()->isPost()) {
         $this->getEntityManager()->persist($announcement);
         $this->getEntityManager()->flush();
         $userRepo = $this->getEntityManager()->getRepository('NightsWatch\\Entity\\User');
         $criteria = Criteria::create()->where(Criteria::expr()->gte('rank', $announcement->lowestReadableRank));
         /** @var User[] $users */
         $users = $userRepo->matching($criteria);
         $mail = new Message();
         $mail->setSubject('[NightsWatch] ' . $announcement->title);
         $mail->setFrom(new Address('*****@*****.**', $announcement->user->username));
         $mail->setTo(new Address('*****@*****.**', 'Members'));
         $mail->setEncoding('UTF-8');
         // Create a signature for email
         $title = trim($announcement->user->getTitleOrRank());
         $announcement->content = $announcement->content .= "\n\n" . $announcement->user->username . "  \n" . '*' . $title . '*';
         $body = new MimeBody();
         $bodyHtml = new MimePart($announcement->getParsedContent());
         $bodyHtml->type = Mime::TYPE_HTML;
         $bodyText = new MimePart($announcement->content);
         $bodyText->type = Mime::TYPE_TEXT;
         $body->setParts([$bodyHtml, $bodyText]);
         $mail->setBody($body);
         foreach ($users as $user) {
             if ($user->emailNotifications & User::EMAIL_ANNOUNCEMENT > 0) {
                 $mail->addBcc(new Address($user->email, $user->username));
             }
         }
         $transport = new Sendmail();
         $transport->send($mail);
         $session->title = '';
         $this->redirect()->toRoute('id', ['controller' => 'announcement', 'id' => $announcement->id]);
         return false;
     }
     return new ViewModel(['announcement' => $announcement]);
 }
Example #14
0
 /**
  * @param string $emailAddress
  */
 public function addBccRecipient($emailAddress)
 {
     $this->message->addBcc($emailAddress);
 }
Example #15
0
 public function sendMail($mailOptions = array())
 {
     $this->_setMailOptions($mailOptions);
     $text = new Part($this->mailBody);
     $text->type = Mime::TYPE_HTML;
     $mailBodyParts = new MimeMessage();
     $mailBodyParts->addPart($text);
     if (!empty($this->fileNames) && !empty($this->filePaths)) {
         foreach ($this->filePaths as $key => $filePath) {
             $file = new Part(file_get_contents($filePath));
             $file->encoding = Mime::ENCODING_BASE64;
             $file->type = finfo_file(finfo_open(), $filePath, FILEINFO_MIME_TYPE);
             $file->disposition = Mime::DISPOSITION_ATTACHMENT;
             $file->filename = $this->fileNames[$key];
             $mailBodyParts->addPart($file);
         }
     }
     $options = array();
     if ($this->useSMTP === false) {
         $options = new SmtpOptions(array("name" => $this->smtpName, "host" => $this->smtpHost, "port" => $this->smtpPort));
     } else {
         $options = new SmtpOptions(array('name' => $this->smtpName, 'host' => $this->smtpHost, 'port' => $this->smtpPort, 'connection_class' => $this->smtpConnectionClass, 'connection_config' => array('ssl' => $this->smtpSsl, 'username' => $this->smtpUsername, 'password' => $this->smtpPassword)));
     }
     $mail = new Message();
     $mail->setBody($mailBodyParts);
     $mail->setFrom($this->mailFrom, $this->mailFromNickName);
     $mail->addTo($this->mailTo);
     if (!empty($this->mailCc)) {
         $mail->addCc($this->mailCc);
     }
     if (!empty($this->mailBcc)) {
         $mail->addBcc($this->mailBcc);
     }
     $mail->setSubject($this->mailSubject);
     $transport = new SmtpTransport();
     $transport->setOptions($options);
     $emailLogInfo = array('email_to' => $this->mailTo, 'email_from' => $this->mailFrom, 'email_body' => $this->mailBody, 'email_subject' => $this->mailSubject, 'sender_type' => $this->mailSenderType);
     $emailSend = 0;
     try {
         $transport->send($mail);
         $emailSend = 1;
     } catch (\Exception $e) {
         $emailLogInfo['email_error'] = $e->getMessage();
         throw $e;
     }
     return $emailSend;
 }
Example #16
0
 public function setBcc(Message $message, $bcc)
 {
     if (!empty($bcc)) {
         $bccs = explode(',', $bcc);
         foreach ($bccs as $email) {
             $message->addBcc(trim($email));
         }
     }
 }
 /**
  * pack tagged array of data to SendMessage format
  *
  *
  * @param Array $mailArray
  *
  * return array of data that will be converted to
  * send message
  *
  * @return Array
  */
 public function packData($mailArray)
 {
     $mimeMail = new Message();
     $textPart = $this->packText($mailArray['text'], $mailArray['header']['content-type']);
     unset($mailArray['header']['content-type']);
     $attachmentParts = $this->packAttachments($mailArray['link']);
     if (count($attachmentParts)) {
         $mimeMail->addPart($textPart);
         foreach ($attachmentParts as $part) {
             $mimeMail->addPart($part);
         }
     } else {
         $mimeMail->addPart($textPart);
     }
     $returnMail = new SendMessage();
     $returnMail->setBody($mimeMail);
     foreach ($mailArray['header'] as $header => $value) {
         switch ($header) {
             case 'references':
                 if (is_array($value)) {
                     $res = '';
                     foreach ($value as $reference) {
                         $res .= $reference . ' ';
                     }
                 } elseif (is_string($value)) {
                     $res = $value;
                 } else {
                     continue;
                 }
                 $headers = $returnMail->getHeaders();
                 $headers->addHeaderLine($header, $res);
                 $returnMail->setHeaders($headers);
                 break;
             case 'bcc':
                 $returnMail->addBcc($value);
                 break;
             case 'cc':
                 $returnMail->addCc($value);
                 break;
             case 'to':
                 $returnMail->addTo($value);
                 break;
             case 'from':
                 $returnMail->addFrom($value);
                 break;
             case 'reply-to':
                 $returnMail->addReplyTo($value);
                 break;
             case 'subject':
                 $returnMail->setSubject($value);
                 break;
             default:
                 $headers = $returnMail->getHeaders();
                 $headers->addHeaderLine($header, $value);
                 $returnMail->setHeaders($headers);
                 break;
         }
     }
     return $returnMail;
 }
Example #18
0
 public function sendMail($api_url, $to, $from = '', $template = '', $content = array('subject' => '', 'message' => ''), $pattern = array(), $replace = array(), $attachment = false, $Bcc = '')
 {
     $mail = new Message();
     $body = new MimeMessage();
     $transport = new \Zend\Mail\Transport\Sendmail();
     if ($template != '') {
         if ($template = $this->emailTemplate($api_url, $template)) {
             $html = new MimePart(preg_replace($pattern, $replace, $template['content']));
             $subject = $template['subject'];
         }
     } else {
         if ($content['message'] != '') {
             $html = new MimePart(preg_replace($pattern, $replace, $content['message']));
             $subject = $content['subject'];
         }
     }
     if ($html) {
         $html->type = "text/html";
         if ($attachment != false) {
             $body->setParts(array($html, $attachment));
         } else {
             $body->setParts(array($html));
         }
         $from = $from != '' ? $from : $template['fromEmail'];
         try {
             $mail->setBody($body)->setFrom($from, 'Ovessence')->addTo($to, '')->setSubject(preg_replace($pattern, $replace, $subject));
             if ($Bcc != '') {
                 $mail->addBcc($Bcc, '');
             }
             $transport->send($mail);
             return true;
         } catch (\Exception $ex) {
             //echo $ex->getMessage(); exit;
             return false;
         }
     } else {
         return false;
     }
 }
Example #19
0
 /**
  * Prepare email to send.
  */
 private function prepare($email)
 {
     //Template Variables
     $templateVars = $this->config["template_vars"];
     $templateVars = array_merge($templateVars, $email->toArray());
     //If not layout, use default
     if (!$email->getLayoutName()) {
         $email->setLayoutName($this->config["defaults"]["layout_name"]);
     }
     //If not recipient, send to admin
     if (count($email->getTo()) == 0) {
         $email->addTo($this->config["emails"]["admin"]);
     }
     //If not sender, use default
     if (!$email->getFrom()) {
         $email->setFrom($this->config["defaults"]["from_email"]);
         $email->setFromName($this->config["defaults"]["from_name"]);
     }
     //Render system
     $renderer = new PhpRenderer();
     $resolver = new AggregateResolver();
     $stack = new TemplatePathStack();
     foreach ($this->config["template_path_stack"] as $path) {
         $stack->addPath($path);
     }
     $resolver->attach($stack);
     $renderer->setResolver($resolver);
     // Subject
     if (!$email->getSubject()) {
         $subjectView = $this->createView($templateVars, "subject", $email->getTemplateName());
         try {
             $email->setSubject($renderer->render($subjectView));
         } catch (\Exception $e) {
             $email->setSubject(null);
         }
     }
     // Text Content
     if (!$email->getTextContent()) {
         $textView = $this->createView($templateVars, "txt", $email->getTemplateName());
         $layoutTextView = new ViewModel($templateVars);
         $layoutTextView->setTemplate("/layout/txt/" . $email->getLayoutName());
         try {
             $layoutTextView->setVariable("content", $renderer->render($textView));
             $email->setTextContent($renderer->render($layoutTextView));
         } catch (\Exception $e) {
             $email->setTextContent(null);
         }
     }
     // Html Content
     if (!$email->getHtmlContent()) {
         $htmlView = $this->createView($templateVars, "html", $email->getTemplateName());
         $layoutHtmlView = new ViewModel($templateVars);
         $layoutHtmlView->setTemplate("/layout/html/" . $email->getLayoutName());
         try {
             $layoutHtmlView->setVariable("content", $renderer->render($htmlView));
             $email->setHtmlContent($renderer->render($layoutHtmlView));
         } catch (\Exception $e) {
             $email->setHtmlContent(null);
         }
     }
     //Create Zend Message
     $message = new Message();
     //From
     $message->setFrom($email->getFrom(), $email->getFromName());
     //Reply to
     if ($this->config["defaults"]["reply_to"]) {
         $message->addReplyTo($this->config["defaults"]["reply_to"], $this->config["defaults"]["reply_to_name"]);
     }
     if ($email->getReplyTo()) {
         $message->addReplyTo($email->getReplyTo(), $email->getReplyToName());
     }
     //To recipients
     foreach ($email->getTo() as $emailAddress => $user) {
         if (is_object($user)) {
             if ($user->getMailOpt()) {
                 $message->addTo($emailAddress, $user->getFullName());
             }
         } else {
             $message->addTo($emailAddress, $user);
         }
     }
     //Cc recipients
     foreach ($email->getCc() as $emailAddress => $name) {
         if (is_object($user)) {
             if ($user->getMailOpt()) {
                 $message->addCc($emailAddress, $user->getFullName());
             }
         } else {
             $message->addCc($emailAddress, $user);
         }
     }
     //Bcc recipients
     foreach ($email->getBcc() as $emailAddress => $name) {
         if (is_object($user)) {
             if ($user->getMailOpt()) {
                 $message->addBcc($emailAddress, $user->getFullName());
             }
         } else {
             $message->addBcc($emailAddress, $user);
         }
     }
     //Subject
     if ($email->getSubject()) {
         $message->setSubject($email->getSubject());
     }
     // Body Multipart
     // Issue - not able to send TXT and HTML multibody
     // http://framework.zend.com/issues/browse/ZF2-196
     /*
     if($textContent) {
     	$textContent = new MimePart($textContent);
     	$textContent->type = "text/plain";
     }
             if($htmlContent) {
     	$htmlContent = new MimePart($htmlContent);
     	$htmlContent->type = "text/html";
             }
     $body = new MimeMessage();
     $body->setParts(array($textContent, $htmlContent));
             
     $message->setBody($body);		
     $message->getHeaders()->get('content-type')->setType('multipart/alternative');
     */
     //Body (Just html email right now)
     $htmlContent = new MimePart($email->getHtmlContent());
     $htmlContent->type = "text/html";
     $body = new MimeMessage();
     $body->setParts(array($htmlContent));
     $message->setBody($body);
     return $message;
 }
Example #20
0
 /**
  * @param       $subject
  * @param       $html
  * @param       $plain
  * @param array $options
  * @param array $receivers
  * @param array $attachments
  *
  * @return Mail\Message
  */
 protected function _assembleMailMessage($subject, $html, $plain, array $options, array $receivers, array $attachments = [])
 {
     $config = $this->_rendererConfig;
     $message = new Mail\Message();
     $message->setEncoding('UTF-8');
     // Sender
     if (isset($options['use_default_sender']) && $options['use_default_sender'] === true) {
         $fromEmail = isset($config['mail_from_email']) ? $config['mail_from_email'] : null;
         $fromName = isset($config['mail_from_name']) ? $config['mail_from_name'] : null;
     } else {
         $fromEmail = isset($options['sender_mail']) ? $options['sender_mail'] : null;
         $fromName = isset($options['sender_name']) ? $options['sender_name'] : null;
     }
     $addressListFrom = new Mail\AddressList();
     $addressListFrom->add(new Mail\Address($fromEmail, isset($fromName) ? $fromName : null));
     $message->setFrom($addressListFrom);
     // Receiver
     $addressListTo = new Mail\AddressList();
     foreach ($receivers as $receiver) {
         $recEmail = isset($config['email_receiver_override']) ? $config['email_receiver_override'] : $receiver[0];
         $recName = isset($receiver[1]) ? $receiver[1] : null;
         $addressListTo->add(new Mail\Address($recEmail, $recName));
     }
     $message->setTo($addressListTo);
     if (isset($config['mail_bcc']) && is_array($config['mail_bcc'])) {
         foreach ($config['mail_bcc'] as $bccAddress) {
             // Avoid sending email copy to "to" AND bcc
             $found = false;
             foreach ($message->getTo() as $to) {
                 if ($to->getEmail() == $bccAddress) {
                     $found = true;
                     break;
                 }
             }
             if (!$found) {
                 $addressListBcc = new Mail\AddressList();
                 $addressListBcc->add(new Mail\Address($bccAddress));
                 $message->addBcc($addressListBcc);
             }
         }
     }
     if (isset($config['subject_prefix']) && $config['subject_prefix'] != '') {
         $subject = $config['subject_prefix'] . $subject;
     }
     $message->setSubject($subject);
     if (empty($attachments)) {
         $message->setBody($html);
         $contentType = Mail\Header\ContentType::fromString('Content-Type: text/html; charset=utf-8');
         $message->getHeaders()->addHeader($contentType);
         $contentTransferEncoding = Mail\Header\ContentTransferEncoding::fromString('Content-Transfer-Encoding: 8bit');
         $message->getHeaders()->addHeader($contentTransferEncoding);
     } else {
         $html = new Mime\Part($html);
         $html->type = Mime\Mime::TYPE_HTML;
         $html->charset = 'UTF-8';
         $html->disposition = Mime\Mime::DISPOSITION_INLINE;
         $html->encoding = Mime\Mime::ENCODING_QUOTEDPRINTABLE;
         $body = new Mime\Message();
         $body->addPart($html);
         foreach ($attachments as $attachmentData) {
             if (isset($attachmentData['file_path']) && is_readable($attachmentData['file_path'])) {
                 $attachmentData['file_data'] = file_get_contents($attachmentData['file_path']);
             }
             if (isset($attachmentData['file_data']) && !empty($attachmentData['file_data'])) {
                 $attachment = new Mime\Part($attachmentData['file_data']);
                 $attachment->type = $attachmentData['mime_type'];
                 $attachment->filename = $attachmentData['name'];
                 $attachment->disposition = Mime\Mime::DISPOSITION_ATTACHMENT;
                 $attachment->encoding = Mime\Mime::ENCODING_BASE64;
                 $body->addPart($attachment);
             }
         }
         $message->setBody($body);
     }
     return $message;
 }
Example #21
0
 public function send(Message $message, array $attachments = array())
 {
     if ($this->getConfiguration()->getSendAllMailsToBcc() !== null) {
         $message->addBcc($this->getConfiguration()->getSendAllMailsToBcc());
     }
     if ($this->getConfiguration()->getSendAllMailsTo() != null) {
         $message->setTo($this->getConfiguration()->getSendAllMailsTo());
     }
     $content = $message->getBody();
     $bodyMessage = new \Zend\Mime\Message();
     $multiPartContentMessage = new \Zend\Mime\Message();
     $text = new Part(strip_tags($content));
     $text->type = Mime::TYPE_TEXT;
     $text->encoding = Mime::ENCODING_QUOTEDPRINTABLE;
     $multiPartContentMessage->addPart($text);
     $html = new Part($content);
     $html->type = Mime::TYPE_HTML;
     $html->encoding = Mime::ENCODING_QUOTEDPRINTABLE;
     $html->charset = 'utf-8';
     $multiPartContentMessage->addPart($html);
     $multiPartContentMimePart = new Part($multiPartContentMessage->generateMessage());
     $multiPartContentMimePart->charset = 'UTF-8';
     $multiPartContentMimePart->type = 'multipart/alternative';
     $multiPartContentMimePart->boundary = $multiPartContentMessage->getMime()->boundary();
     $bodyMessage->addPart($multiPartContentMimePart);
     foreach ($attachments as $attachment) {
         $bodyMessage->addPart($attachment);
     }
     $message->setBody($bodyMessage);
     $message->setEncoding("UTF-8");
     $this->transport->send($message);
 }