/**
  * @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;
 }
예제 #2
0
 public function testRestoreFromSerializedString()
 {
     $this->message->addTo('*****@*****.**', 'ZF DevTeam');
     $this->message->addFrom('*****@*****.**', "Matthew Weier O'Phinney");
     $this->message->addCc('*****@*****.**', 'ZF Contributors List');
     $this->message->setSubject('This is a subject');
     $this->message->setBody('foo');
     $serialized = $this->message->toString();
     $restoredMessage = Message::fromString($serialized);
     $this->assertEquals($serialized, $restoredMessage->toString());
 }
예제 #3
0
파일: Mail.php 프로젝트: arvind2110/zf2mail
 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;
 }
예제 #4
0
 /**
  * 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);
 }
예제 #5
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);
 }
예제 #6
0
파일: MailService.php 프로젝트: bitweb/mail
 public function attachDefaultListeners()
 {
     if ($this->eventManager !== null) {
         return;
     }
     $this->getEventManager()->attach(self::EVENT_SEND_MAIL, function (EventInterface $e) {
         $params = $e->getParams();
         $message = new Message();
         $attachments = [];
         if (isset($params['to']) && is_array($params['to'])) {
             $message->setTo($params['to']['email'], $params['to']['name']);
         }
         if (isset($params['cc']) && is_array($params['cc'])) {
             foreach ($params['cc'] as $cc) {
                 $message->addCc($cc['email'], $cc['name']);
             }
         }
         if (isset($params['bcc']) && is_array($params['bcc'])) {
             foreach ($params['bcc'] as $bcc) {
                 $message->addBcc($bcc['email'], $bcc['name']);
             }
         }
         if (isset($params['from']) && is_array($params['from'])) {
             $message->setFrom($params['from']['email'], $params['from']['name']);
         }
         if (isset($params['subject']) && $params['subject']) {
             $message->setSubject($params['subject']);
         }
         if (isset($params['body']) && $params['body']) {
             $message->setBody($params['body']);
         }
         if (isset($params['attachments']) && is_array($params['attachments'])) {
             foreach ($params['attachments'] as $filePath) {
                 $attachments[] = $this->getPartFromFile($filePath);
             }
         }
         $this->send($message, $attachments);
     });
 }
예제 #7
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());
     }
 }
예제 #8
0
파일: Mailer.php 프로젝트: renta/EmailZF2
 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);
 }
예제 #9
0
파일: Forgot.php 프로젝트: fousheezy/auth
 /**
  * @param  UserInterface $user
  * @return Message
  */
 protected function getMessage(UserInterface $user)
 {
     // Emailing logic here
     $content = $this->renderMessageContent($user);
     $htmlPart = new MimePart($content);
     $htmlPart->type = "text/html";
     $textPart = new MimePart($content);
     $textPart->type = "text/plain";
     $body = new MimeMessage();
     $body->setParts(array($textPart, $htmlPart));
     $message = new Message();
     $message->addFrom($this->getOptions()->get('from_email'), $this->getOptions()->get('from_name'));
     $message->addTo($user->getEmail(), $user->getFirstName() . ' ' . $user->getLastName());
     $ccs = $this->getOptions()->get('copy_to', array());
     foreach ($ccs as $cc) {
         $message->addCc($cc);
     }
     $message->setSubject($this->getOptions()->get('reset_subject', 'Please Reset Your Password'));
     $message->setEncoding("UTF-8");
     $message->setBody($body);
     $message->getHeaders()->get('content-type')->setType('multipart/alternative');
     return $message;
 }
예제 #10
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);
 }
예제 #11
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;
 }
예제 #12
0
파일: ClientTest.php 프로젝트: thefox/imapd
 /**
  * @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);
 }
 /**
  * common functionality for send email
  *
  * @param array $mailOptions
  *            use mailTo,mailFrom,mailFromNickName,mailSubject,mailBody,...
  *            as options
  * @author Kaushal
  * @method sendMail
  * @return int
  */
 public function sendMail($mailOptions = array())
 {
     $config = $this->serviceManager->get('config');
     $smtpName = $config['settings']['EMAIL']['SMTP_NAME'];
     $smtpHost = $config['settings']['EMAIL']['SMTP_HOST'];
     $smtpPort = $config['settings']['EMAIL']['SMTP_PORT'];
     $smtpConnectionClass = $config['settings']['EMAIL']['SMTP_CONNECTION_CLASS'];
     $smtpUsername = $config['settings']['EMAIL']['SMTP_USERNAME'];
     $smtpPassword = $config['settings']['EMAIL']['SMTP_PASSWORD'];
     $smtpSsl = $config['settings']['EMAIL']['SMTP_SSL'];
     $mailBody = $config['settings']['EMAIL']['BODY'];
     $mailFrom = $config['settings']['EMAIL']['FROM'];
     $mailSubject = $config['settings']['EMAIL']['SUBJECT'];
     $mailFromNickName = $config['settings']['EMAIL']['FROM_NICK_NAME'];
     $mailTo = $config['settings']['EMAIL']['TO'];
     $mailSenderType = $config['settings']['EMAIL']['SMTP_SENDER_TYPE'];
     if (array_key_exists('mailTo', $mailOptions)) {
         $mailTo = $mailOptions['mailTo'];
     }
     if (array_key_exists('mailCc', $mailOptions)) {
         $mailCc = $mailOptions['mailCc'];
     }
     if (array_key_exists('mailFrom', $mailOptions)) {
         $mailFrom = $mailOptions['mailFrom'];
     }
     if (array_key_exists('mailFromNickName', $mailOptions)) {
         $mailFromNickName = $mailOptions['mailFromNickName'];
     }
     if (array_key_exists('mailSubject', $mailOptions)) {
         $mailSubject = $mailOptions['mailSubject'];
     }
     if (array_key_exists('mailBody', $mailOptions)) {
         $mailBody = $mailOptions['mailBody'];
     }
     if (array_key_exists('sender_type', $mailOptions)) {
         $mailSenderType = $mailOptions['sender_type'];
     }
     $text = new Part($mailBody);
     $text->type = \Zend\Mime\Mime::TYPE_HTML;
     $mailBodyParts = new Message();
     $mailBodyParts->addPart($text);
     if (!empty($mailOptions['realFileName']) && !empty($mailOptions['tempFilePath'])) {
         $file = new Part(file_get_contents($mailOptions['tempFilePath']));
         $file->encoding = \Zend\Mime\Mime::ENCODING_BASE64;
         $file->type = finfo_file(finfo_open(), $mailOptions['tempFilePath'], FILEINFO_MIME_TYPE);
         $file->disposition = \Zend\Mime\Mime::DISPOSITION_ATTACHMENT;
         // $file->filename =basename($mailOptions['tempFilePath']);
         $file->filename = $mailOptions['realFileName'];
         $mailBodyParts->addPart($file);
     }
     $options = new SmtpOptions(array("name" => $smtpName, "host" => $smtpHost, "port" => $smtpPort));
     $mail = new Mail\Message();
     $mail->setBody($mailBodyParts);
     $mail->setFrom($mailFrom, $mailFromNickName);
     $mail->addTo($mailTo);
     if (!empty($mailCc)) {
         $mail->addCc($mailCc);
     }
     $mail->setSubject($mailSubject);
     $transport = new SmtpTransport();
     $transport->setOptions($options);
     $emailLogInfo = array('email_to' => $mailTo, 'email_from' => $mailFrom, 'email_body' => $mailBody, 'email_subject' => $mailSubject, 'sender_type' => $mailSenderType);
     try {
         /*
          * Following line is commented temporary Uncomment while going
          */
         $transport->send($mail);
         $emailSend = 1;
     } catch (\Exception $e) {
         $emailSend = 0;
         $emailLogInfo['email_error'] = $e->getMessage();
         // print_r($emailLogInfo);
         throw $e;
     }
     return $emailSend;
     /*
      * $emailLogInfo['email_send'] = ($emailSend == 1) ? 'y' : 'n'; if (is_array($mailTo)) { foreach ($mailTo as $value) { $emailLogInfo['email_to'] = $value; $emailSave = $this->saveEmailLog($emailLogInfo, $this->getServiceLocator()); } } else { $emailSave = $this->saveEmailLog($emailLogInfo, $this->getServiceLocator()); } $flag = ($emailSave == 1 && $emailSend == 1) ? 1 : 0; return $flag;
      */
 }
예제 #14
0
 function setCc($address)
 {
     foreach ((array) $address as $cc) {
         $this->mail->addCc($cc);
     }
 }
예제 #15
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;
 }
예제 #16
0
파일: Mail.php 프로젝트: WasabiLib/Mail
 /**
  * @param string $emailAddress
  */
 public function addCcRecipient($emailAddress)
 {
     $this->message->addCc($emailAddress);
 }
 /**
  * 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;
 }
예제 #18
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);
 }
예제 #19
0
 public function detailsAction()
 {
     $decision_no = (int) $this->params()->fromRoute('id', 0);
     if (!$decision_no) {
         return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden'));
     }
     $this->init();
     $fm = $this->flashMessenger();
     $success = 0 < $this->ctrlLv ? true : false;
     if (!$success) {
         return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden'));
     }
     $fm = $this->flashMessenger();
     $decisionTable = new DecisionTable();
     $loggedin_user_no = $this->auth()->get('user_no');
     try {
         $decisionDetails = $decisionTable->getApprovalDetails($decision_no, $loggedin_user_no);
         $approversList = $decisionTable->getApproverList($decisionDetails['decision_no'], $this->auth()->get('user_no'));
         $approvalAttachments = $decisionTable->getApprovalAttachments($decision_no);
     } catch (\Exception $e) {
         $this->flashMessenger()->addMessage("Fatal Error! " . $e->getMessage());
         return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden'));
     }
     $continue = false;
     foreach ($approversList as $approver) {
         if ($approver["user_no"] == $loggedin_user_no || $loggedin_user_no == $decisionDetails['create_user']) {
             $continue = true;
             break;
         }
     }
     if (!$continue) {
         $this->flashMessenger()->addMessage("You must be 1 of its approver in order to view this resource..");
         return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden'));
     }
     $form = new ApprovalForm();
     $form->setApprovalDetailsForm();
     $success = false;
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         $filter = new ApprovalFilter();
         $filter->setDetailsFilter();
         $form->setInputFilter($filter->getInputFilter());
         if ($form->isValid()) {
             $parram = $this->params();
             $mail = new Message();
             $mail->setEncoding("UTF-8");
             if ($parram->fromPost('approve') != null) {
                 $success = $decisionTable->approveRequest($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks'));
                 $approver = $decisionTable->getCurrentApprover($decision_no);
                 $progress = $decisionTable->isCompleted($decision_no);
                 if ($progress) {
                     $mail->addFrom(AUTO_MAIL_FROM)->addTo($decisionDetails['email'])->setSubject("Request Completed - " . $decisionDetails['decision_title']);
                     $body_tpl = "Your Request has been approved.";
                     $body_tpl .= "\nFor more details, just click the link below";
                     $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no'];
                     $body_tpl .= "\n Request: " . $decisionDetails['decision_title'];
                     $body_tpl .= "\n" . "URL:" . BASE_URL . "/approval/details/" . $decision_no;
                     $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***";
                     $mail->setBody($body_tpl);
                 } else {
                     $mail->addFrom(AUTO_MAIL_FROM)->addTo($approver['email'])->setSubject("Approval Request - " . $decisionDetails['decision_title']);
                     $body_tpl = file_get_contents(APP_DIR . '/tpl/remind-request.txt');
                     $body_tpl = trim(str_replace("\r\n", "\n", $body_tpl));
                     $body_tpl = $this->translator()->translate($body_tpl);
                     $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no'];
                     $body_tpl .= "\n Request: " . $decisionDetails['decision_title'];
                     $body_tpl .= "\n" . "URL:" . BASE_URL . "/approval/details/" . $decision_no;
                     $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***";
                     $mail->setBody($body_tpl);
                 }
             } else {
                 if ($parram->fromPost('reject') != null) {
                     $success = $decisionTable->rejectRequest($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks'));
                     $mail->addFrom(AUTO_MAIL_FROM)->addTo($decisionDetails['email'])->setSubject("Request Rejected - " . $decisionDetails['decision_title']);
                     $cc_approver = $decisionTable->getApprovers($decision_no);
                     foreach ($cc_approver as $each_recipient) {
                         $mail->addCc($each_recipient['email']);
                     }
                     $body_tpl = "Request has been rejected by " . $this->auth()->get('user_name');
                     $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no'];
                     $body_tpl .= "\n Request: " . $decisionDetails['decision_title'];
                     $body_tpl .= "\n\n " . $this->auth()->get('user_name') . ":" . $this->params()->fromPost('remarks') . "\n\n";
                     $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***";
                     $mail->setBody($body_tpl);
                 } else {
                     if ($parram->fromPost('recall') != null) {
                         $success = $decisionTable->recallRequest($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks'));
                         $nextApprover = $decisionTable->nextApprover($decision_no);
                         $mail->addFrom(AUTO_MAIL_FROM)->addCc($nextApprover['email'])->addBcc($decisionDetails['email'])->setSubject("Approval Recall - " . $decisionDetails['decision_title']);
                         $recipients = $decisionTable->getApprovers($decision_no);
                         foreach ($recipients as $each_recipient) {
                             $mail->addTo($each_recipient['email']);
                         }
                         $body_tpl = "Request has been recalled by " . $this->auth()->get('user_name') . " san";
                         $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no'];
                         $body_tpl .= "\n Subject: " . $decisionDetails['decision_title'];
                         $body_tpl .= "\n\n " . $this->auth()->get('user_name') . ":" . $this->params()->fromPost('remarks') . "\n\n";
                         $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***";
                         $mail->setBody($body_tpl);
                     } else {
                         if ($parram->fromPost('recall-by-owner') != null) {
                             $success = $decisionTable->recallByOwner($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks'));
                             $mail->addFrom(AUTO_MAIL_FROM)->setSubject("Approval Recall by Requestor - " . $decisionDetails['decision_title']);
                             $recipients = $decisionTable->getApprovers($decision_no);
                             foreach ($recipients as $each_recipient) {
                                 $mail->addTo($each_recipient['email']);
                             }
                             $body_tpl = "Request has been recalled by applicant - " . $decisionDetails['user_name'];
                             $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no'];
                             $body_tpl .= "\n Subject: " . $decisionDetails['decision_title'];
                             $body_tpl .= "\n\n " . $decisionDetails['user_name'] . ":" . $this->params()->fromPost('remarks') . "\n\n";
                             $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***";
                             $mail->setBody($body_tpl);
                         }
                     }
                 }
             }
             if ($success) {
                 $transport = new SmtpTransport();
                 $options = new SmtpOptions(array('host' => 'smtp.gmail.com', 'connection_class' => 'plain', 'connection_config' => array('ssl' => 'tls', 'username' => AUTO_MAIL_FROM, 'password' => AUTO_MAIL_FROM_PASSWORD), 'port' => 587));
                 $transport->setOptions($options);
                 $success = $transport->send($mail);
             } else {
                 if ($success && IS_TEST) {
                     $logger = new \Zend\Log\Logger();
                     $writer = new \Zend\Log\Writer\Stream(APP_DIR . '/log/debug.txt');
                     $logger->addWriter($writer);
                     $logger->log(\Zend\Log\Logger::DEBUG, print_r($mail, 1));
                 }
             }
             return $this->redirect()->toRoute('app', array('controller' => 'approval', 'action' => 'details', 'id' => $decision_no));
         }
     }
     $values = array('ctrlLv' => $this->ctrlLv, 'admin' => $this->auth()->get('admin'), 'user_log' => $loggedin_user_no, 'approver' => $this->auth()->get('approver'), 'decisionDetails' => $decisionDetails, 'approversList' => $approversList, 'approvalAttachments' => $approvalAttachments, 'form' => $form, 'id' => $decision_no);
     $view = new ViewModel($values);
     $view->setTemplate('/' . VIEW_DIR . '/approval/details.phtml');
     return $view;
 }
예제 #20
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;
 }